问题描述
下面是API * .yml,我想用 var arrayOfids;
function parsejson(){
for(var i = 0; i < data.length; i++){
var objectid = data[i].id
var objchildren = data[i].children;
getidfromchildren(objchildren);
}
}
function getidfromchildren(arr){
for(var j=0; j < arr.length; j++){
arrayOfids.push(arr[i].id);
if(arr[i].children.length != 0){
getidfromchildren(arr);
}
}
}
响应数据,但它现在总是返回Content-type: text/plain
。
application/json
/order:
post:
tags:
- order
summary: order
operationId: postorder
parameters:
requestBody:
description: Order result
content:
application/json:
schema:
type: object
properties:
openReq:
type: string
example: 'test'
responses:
200:
description: Customer order receive successed
headers: {}
content:
application/json:
schema:
type: string
text/plain:
schema:
type: string
响应标头始终为def post_order(platform,open_req=None): # noqa: E501
"""order
"""
return 'do some magic!'
content-type: application/json
此响应标头始终为 responses:
200:
description: Customer order receive successed
headers: {}
content:
application/json:
schema:
type: string
text/plain:
schema:
type: string
content-type: text/plain; charset=utf-8
我可以在函数 responses:
200:
description: Customer order receive successed
headers: {}
content:
# application/json:
# schema:
# type: string
text/plain:
schema:
type: string
中设置响应头的内容类型吗?
解决方法
也许您在混淆API Swagger文档与实际实现,您的文档是正确的,这意味着响应200 OK
可以返回为application/json
或text/plain
。返回哪一个完全取决于端点的实现。如果您的端点仅返回application/json
,那么您将永远不会收到text/plain
,而不是Swagger / OpenApi的工作。
如果您希望函数动态决定要返回的内容类型,则必须按照 documentation 中的说明明确设置标头。
这两种方法之一是返回内容元组、返回码和标题字典,如下所示:
chrono::system_clock::now
第二种方法是显式创建响应对象并返回:
def post_order(platform,open_req=None):
"""order
"""
return 'do some magic!',200,{'content-type': 'text/plain'}
这让您可以更好地控制其他调整。但是如果简单的元组解决方案适用于您的情况,则没有必要。