【问题标题】:wso2api manager 4.0 with Post Request Error: Not Foundwso2api manager 4.0,带有发布请求错误:未找到
【发布时间】:2021-09-10 03:13:47
【问题描述】:

我想使用 wso2 api manager 保护 .net core api,因为我已经在 api 上启用了 swagger 并能够获得发布响应。我用大摇大摆的定义创建了 Api

http://localhost:5000/swagger/v1/swagger.json

并给定端点 http://localhost:5000/api/BigData 将在 swagger ui 中获得响应

现在我正在尝试使用 api 测试与令牌一起工作的 wso2api 显示错误

来自 wso2-am 的 curl 请求

curl  reuqest  semding  from  wso2-am  ```curl -X 'POST' \
  'http://localhost:8280/api/v1/api/BigData' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'Internal-Key: eyJraWQiOiJnYXRld2F5X2NlcnRpZmljYXRlX2FsaWFzIiwiYWxnIjoiUlMyNTYifQ.eyJzdWIiOiJhZG1pbkBjYXJib24uc3VwZXIiLCJpc3MiOiJodHRwczpcL1wvbG9jYWxob3N0Ojk0NDNcL29hdXRoMlwvdG9rZW4iLCJrZXl0eXBlIjoiUFJPRFVDVElPTiIsInN1YnNjcmliZWRBUElzIjpbeyJzdWJzY3JpYmVyVGVuYW50RG9tYWluIjpudWxsLCJuYW1lIjoiQmlnRGF0YUFQSSIsImNvbnRleHQiOiJcL2FwaVwvdjEiLCJwdWJsaXNoZXIiOiJhZG1pbiIsInZlcnNpb24iOiJ2MSIsInN1YnNjcmlwdGlvblRpZXIiOm51bGx9XSwiZXhwIjoxNjI0OTIyMzg3LCJ0b2tlbl90eXBlIjoiSW50ZXJuYWxLZXkiLCJpYXQiOjE2MjQ4NjIzODcsImp0aSI6ImZiYjQ2OGQ0LWUyOTItNGEyZC1hZmEzLTdhNzFlODUxNTlhNCJ9.Xkz9jigCPs3I65kI40rigE6L8mA-w4kks3n7Cabahg1dMVEo8AVs64PXuKBshucuT_vk5ms-7wFiIiI0pdXrL1ymOlEacBtW2r1F-WvV7o9SVw6lpF4EQNsIFi96Exe5Gg0k2wSaG1iErJ2P8boOQGI66fudGfjC-Gt1RJxfE-ZwQ_aS7fNur4G7HFAbBOdSq3yNDWjsMiv9k4IBlQ-IkJj88zSM6eXnHbtiAJKB84bAkFX7PDxXzjdItGkTKBx2oW11SO27xvqlrlJCHh6dcvEKb1_XZIjyrrvQjTGTX0cTgUlL0HQFOL9RwavrDwXh_fsP51zhGbbLozuUbhUKWg' \
  -d '{
  "messageID": "string",
  "tenantName": "string",
  "tenantID": "string",
  "entityID": "string",
  "entityType": "string",
  "dataType": "string",
  "messageKind": "string",
  "routing": "string",
  "payload": "string",
  "type": "string",
  "clientID": "string",
  "userID": "string",
  "isAdmin": true,
  "fabric": "string",
  "capabilityId": "string",
  "sourceSystem": "string",
  "applicationName": "string"
}'```

当我再次检查端点时,它的显示方法不允许

【问题讨论】:

  • 您可以尝试使用 cURL 命令调用 API 并共享输出吗? 405 Method Not allowed 是由于您尝试从浏览器调用 GET 资源而产生的(如果您从浏览器执行 URL,它将是 GET 和 POST)。另外,您能否指定已在 API Manager 中配置的生产端点?如果您将实际端点的完整 URL 提到为生产端点,那么 API 需要重构
  • 这是我使用 swagger post 客户端 curl -X 'POST' \ 'http://localhost:5000/api/BigData' \ -H 'accept: application/json' \ -H 'Content-Type: application/json' \ -d '{ "tenantName": "string", "tenantID": "string", "entityID": "string", "entityType": "string", "dataType": "string", "messageKind": "string", "routing": "string", "payload": "string", "type": "string", "clientID": "string", "userID": "string", "isAdmin": true, "fabric": "string", "capabilityId": "string", "sourceSystem": "string", "applicationName": "string"}' 发送的 curl 请求
  • api 端点 URL 我为沙盒和生产设置了 http://localhost:5000/api/BigData
  • 我为响应屏幕编辑了帖子
  • 感谢您的更新。我相信您已经在 API 管理器中创建了一个以 POST/api/BigData 的 API 资源。如果是,请将ProductionSandbox 端点更新为http://localhost:5000(不指定完整的URL,因为API 管理器会将资源附加到所提到的端点的末尾)。保存 API 并尝试场景

标签: rest .net-core wso2 wso2-am


【解决方案1】:

与共享信息一样,我相信您已将 API 资源配置为/api/BigData。如果是这种情况,请将ProductionSandbox 端点更新为http://localhost:5000,而不是使用实际端点的完整URL,以克服404 错误。

API 管理器使用并附加在生产/沙盒端点末尾定义的 API 资源。因此,当您配置 API 并将其公开时,您必须确保选择正确的端点。

例如:

如果您有一个具有以下端点 https://backendserver/api/v1/gethttps://backendserver/api/v1/post 的实际后端服务器,那么您必须在 API 管理器中配置一个 API,如下所示

  • 使用以下两个资源创建 API
    • /get
    • /post
  • 将生产/沙盒端点配置为https://backendserver/api/v1

然后,如果您使用 API Manager 端点 (https://apimanager:8243/your-api/v1/get) 调用 API,/get 资源将附加到配置的端点,并且请求将作为 https://backendserver/api/v1/get 提供。

希望这能解释并让您简要了解 API Manager 中的 URL 映射。

【讨论】:

    猜你喜欢
    • 2014-12-28
    • 2018-03-28
    • 2019-10-14
    • 1970-01-01
    • 2019-12-29
    • 1970-01-01
    • 2020-05-12
    • 2023-01-05
    • 2018-11-28
    相关资源
    最近更新 更多