我有一个手工制作的REST API,我想改进它以使用Openapi 3.0.0
我的一个(手工制作的Python/Flask)端点同时支持GET和POST方法:
@app.route('/search', methods=['POST','GET'])
def searchDevices():
if request.method == 'GET':
brand = request.args.get('brand')
model = request.args.get('model')
capas = request.args.get('capabilities')
elif request.method == 'POST':
brand = request.form.get('brand')
model = request.form.get('model')
capas = request.form.get('capabilities')
有没有办法在Openapi 3.0.0中对此进行建模呢?现在我知道我需要用很多重复来定义YAML端点(再见,干),但也许我遗漏了一些东西。如果我能做这样的事情就太酷了:
paths:
/search:
parameters:
- schema:
:
get, post:
但可惜的是,这似乎不工作的时刻。
1条答案
按热度按时间2izufjch1#
一个终结点,无论参数是通过GET还是POST方法发送的,它都支持这些参数。
这可以用OpenAPI建模,但需要一些重复,因为:a)不同的HTTP方法(GET、POST等)必须被定义为单独的操作; B)查询字符串和请求主体由不同的关键字表示。
要对GET查询字符串重用POST请求主体架构,需要将整个查询字符串定义为单个对象类型参数,并使用
style: form
+explode: true
作为序列化样式。这意味着在查询字符串中发送对象时,该对象将转换为key=value
对。API定义如下所示: