我正在使用的API有几个端点要通过VeryGoodSecurity进行PCI合规性路由。
似乎OpenAPI V3支持重写服务器,如本页所述
全局服务器数组可以在路径级别或操作级别被覆盖。如果某些端点使用的服务器或基本路径与API的其余部分不同,这将非常方便。常见的例子有:
如何用rswag实现这一点?
我试过这样做:
path('/v1/payment-methods/cards') do
post('Create a payment method from card details') do
tags('Payment Method')
consumes('application/json')
produces('application/json')
# ....
# Rest of the API will be on api.tryedge.com
servers([{
url: 'https://secure.tryedge.com',
description: 'Edge secure card portal'}])
希望在Swagger YML中实现类似的东西:
/v1/payment-methdos/cards:
post:
servers:
- url: https://secure.tryedge.com
description: Edge secure card portal
但是我得到一个错误。
undefined method `servers' for RSpec::ExampleGroups::ApiV1PaymentMethodsController::V1PaymentMethodsCards::Post:Class
非常感谢任何帮助。提前谢谢。
rswag
没有定义一套完整的帮助程序(包括上面问题中遇到的servers
)来覆盖整个OpenAPI v3模式。
然而,可以通过操纵测试用例元数据来达到相同的结果,正如@engineersmnky上面的注释所突出显示的那样。
path('/v1/payment_methods/cards') do
post('Link a card') do
tags('Payment Method')
consumes('application/json')
produces('application/json')
security([bearerAuth: []])
operationId('linkCard')
description('Links a card to an existing Edge customer.')
metadata[:operation][:servers] = [{ url: 'https://secure.tryedge.com', description: 'Edge secure card portal' }]
这是因为rswag通过更新测试用例的metadata
来构建模式。