【问题标题】:WSO2 API Manager change http methodWSO2 API Manager 更改 http 方法
【发布时间】:2016-04-08 03:34:20
【问题描述】:

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}

如果我删除属性中介,请求会通过并到达后端。

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

【问题讨论】:

    标签: wso2 wso2-am


    【解决方案1】:

    您可以使用以下自定义流入中介序列将 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 中找不到给定请求的匹配资源

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不会让 API 的用户感到困惑吗?
      猜你喜欢
      • 1970-01-01
      • 2020-04-17
      • 2018-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      相关资源
      最近更新 更多