【发布时间】:2020-04-08 17:50:50
【问题描述】:
我对 WSO2 工具很陌生。我最近开始使用 WSO2 API Manager(版本 3.1.0)。 我通过导入 httpbin swagger 规范创建了一个 API 网关:https://github.com/Azure/api-management-samples/blob/master/apis/httpbin.swagger.json。我发布了 API,订阅了它,生成了 API 密钥并开始测试。
我在Postman中导入spec,配置API key进行授权,将服务器改成本地网关http://localhost:8280/Api_Base/1.0
使用 GET 方法定义的所有资源都可以访问,但 POST、PUT 和 PATCH 资源 无法通过网关访问。对于这些资源,我收到了以下错误响应“faultstring>unknown”。我也尝试使用 cURL,但得到了相同的结果。当我直接为 httpbin 尝试 POST 时,它工作得很好:
curl --location --request POST 'http://httpbin.org/post'
{
"args": {},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "curl/7.58.0",
"X-Amzn-Trace-Id": "Root=1-5e8e0d39-ddf21f1055008f60707cf150"
},
"json": null,
"origin": "95.103.xxx.xxx",
"url": "http://httpbin.org/post"
}
并通过我的 API 网关(也带有 API 密钥):
curl --location --request POST 'http://localhost:8280/HTTP_Bin_Mock/1.0/post'
<faultstring>unknown</faultstring>
可能出了什么问题?
【问题讨论】:
-
我刚刚尝试了相同的 swagger 定义,并且能够成功调用 /post 资源。能否在 Api 网关中启用 HTTP 线路日志并检查是否正确接收到后端响应?
-
是的,我发现当有效载荷不为空时,它适用于 3 P-s 。但默认情况下,swagger 规范中没有有效负载。