WSO2 API Manager更改http方法

时间:2016-04-08 03:34:20

标签: wso2 wso2-am

wso2 api manager v1.10.0是否允许通过自定义顺序将请求的HTTP方法转换为后端?

我通过发布商Web控制台使用http GET资源创建了一个api。但由于端点仅支持POST方法,我尝试通过使用属性介体创建自定义来更改HTTP方法:

<property name="HTTP_METHOD" value="POST" scope="axis2"/>

但是回复显示了错误信息:

{
  "fault": {
    "code": 403,
    "type": "Status report",
    "message": "Fault Call",
    "description": "No matching resource found in the API for the given request"
  }
}

日志文件只显示以下行:

==> /opt/wso2am-gateway/repository/logs/wso2carbon.log <==
[2016-04-08 10:30:16,868]  INFO -  STATUS = Executing default 'fault' sequence, ERROR_CODE = 403, ERROR_MESSAGE = No matching resource found in the API for the given request {org.apache.synapse.mediators.builtin.LogMediator}

如果我删除了属性介体,请求将通过并到达后端。

有谁知道如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

您还需要在API上定义POST资源(尽管您不使用它)

答案 1 :(得分:0)

您可以使用以下自定义inFlow中介序列将HTTP_METHOD从GET转换为POST。

 <?xml version="1.0" encoding="UTF-8"?>
<sequence name="CustomIn" xmlns="http://ws.apache.org/ns/synapse">
    <property action="remove" name="HTTP_METHOD" scope="axis2"/>
    <property name="HTTP_METHOD" scope="axis2" type="STRING" value="POST"/>
</sequence>

这里,请求是来自客户端的GET请求。

但是,仅当您在API上类似地定义GET和POST资源时,上述解决方案才有可能(尽管您不使用两者之一)。

否则,在调用API时会收到以下错误消息。

  • 找不到给定API请求的匹配资源
  • 给定API资源不允许使用方法
  • 在API中找不到给定请求的匹配资源