RAML 模拟服务 POST 请求在 Mule 设计中心显示 404 错误
Posted
技术标签:
【中文标题】RAML 模拟服务 POST 请求在 Mule 设计中心显示 404 错误【英文标题】:RAML mocking service POST request showing 404 Error in Mule design center 【发布时间】:2018-08-13 09:01:02 【问题描述】:我正在使用模拟服务功能为其中一个 POC 构建和测试 API 设计。通过模拟服务从设计中心发布消息时,我收到 HTTP 错误代码 404。
另见附图:
不带 URI 参数的 GET、PUT 和 POST 请求都可以正常工作,但每当我尝试使用 POST 方法显式传递特定 gid 或 cid 时,它就会显示上面的错误。
我正在附加 RAML 文件:
https://forums.mulesoft.com/storage/temp/6224-test.txt
我已阅读文档并了解我们可以在使用模拟服务测试 API 时传递任何参数值。
能否请您帮我查一下,为什么带有特定 gid 或 cid 的 POST 请求会返回错误代码?
【问题讨论】:
您能澄清一下您的问题吗?目前尚不完全清楚您要达到的目标。我已尝试回答您的问题,但我不完全确定这是您的问题,因为目前的描述并不完全清楚。 【参考方案1】:根据附加的截图,您正在尝试将某些内容发布到 API 模拟服务的根路径。
而不是删除参数并将 HTTP POST 请求发送到如下 URL:
https://mocksvc.mulesoft.com/mocks/29b2eb87-675e-4aa2-8ae3-c5d13e99e441/
请尽量保持 URI 格式正确:
https://mocksvc.mulesoft.com/mocks/29b2eb87-675e-4aa2-8ae3-c5d13e99e441/groups/gid/channels/cid/chatthreads
在此 URL 中,您只需将花括号中的 gid 和 cid 参数替换为实际值即可。
使用正确格式的 RAML 文件和 URI,例如以下示例:
https://mocksvc.mulesoft.com/mocks/29b2eb87-675e-4aa2-8ae3-c5d13e99e441/groups/10/channels/5/chatthreads
https://mocksvc.mulesoft.com/mocks/29b2eb87-675e-4aa2-8ae3-c5d13e99e441/groups/10/teams
我收到“204 无内容”:
但是当我删除参数并尝试在错误的路径上执行 HTTP POST 时,我得到“404 Not Found”:
根据您提供的屏幕截图;您的 HTTP 请求中的资源路径不完整。这可能会导致 HTTP 错误代码“404 Not Found”。
请确保在 API 控制台中设置了资源的完整路径。这需要能够识别您要发布(创建)的资源。
有关在资源名称中使用特殊字符(如“-”或“$”)的详细信息;请参阅raml-js-parser。 API Designer 正在使用此解析器。
目前仍然存在与处理特殊字符(如“-”)相关的未解决问题。请在 raml-js-parser 的 github 仓库中查看相关的 bug 报告:Resource name is invalid: illegal character #129。
我建议不要在资源名称中使用特殊字符。 (尽管当前的 RFC 标准最终确实允许使用 '$')
据此;资源名称“$ref”似乎在您的 RAML 中引起问题。请考虑提交bug report for the API designer in their github repository。但是这个问题也可能是由解析器引起的......
【讨论】:
我正在尝试 POST mocksvc.mulesoft.com/mocks/739d853a-0af1-4357-9f40-ad4644a3cdfc/…,但它显示 404 not found 错误。 你到底想用“/$ref”实现什么?美元符号最终被认为是一个特殊的字符... 我想调用developer.microsoft.com/en-us/graph/docs/api-reference/beta/api/… doc 中给出的 POST /groups/id/members/$ref API。通常有几个 API 我正在为它们创建 API 规范。有很多 API在使用 $ref 作为 URI 的 microsoft graph 中。 这可能是错误报告的一个很好的论据。如果在 Microsoft API 中经常使用“$”字符,那么您可以期待快速的反馈。也可能有一种解决方法...将“$”转义为 URI“%24”中的 unicode 字符,或者可能使用 html 转义序列“$”。虽然我找不到让它工作的方法......我无法让它工作,但它实际上可能就这么简单......我认为如果你在正确的地方寻求帮助,他们会帮助你。或者至少告诉你这是一个错误还是有一个可行的解决方案。以上是关于RAML 模拟服务 POST 请求在 Mule 设计中心显示 404 错误的主要内容,如果未能解决你的问题,请参考以下文章
Mule 应用程序不断触发错误的流程 - 可能的 RAML 问题