【问题标题】:How to determine what fields are required by a REST API, from the API?如何从 API 确定 REST API 需要哪些字段?
【发布时间】:2017-02-05 04:45:51
【问题描述】:

我正在使用具有模糊 API 文档的网络设备。我能够很好地执行 PATCH 和 GET 请求,但 POST 不起作用。我收到 HTTP 状态错误 422 作为响应,我在 JSON 请求中缺少一个字段,但我提供了文档中指定的必填字段。我在他们的示例代码中尝试了 Python Requests 模块和供应商提供的 PyCurl 模块,但遇到了同样的错误。

REST API 是否具有为特定 POST 返回所需字段及其值类型的调试方法?我说的更多的是模板配置为在请求中看到的内容(例如 JSON {str(ServerName) : int(ServerID)},而不是 API 开发人员可能创建的内容。

【问题讨论】:

  • 许多服务器都支持OPTIONS 方法,如果这不起作用,您必须查看文档,如果您没有文档,祝您好运!
  • @KlausD。感谢这个想法,我已经尝试过了,但给了我与 GET 相同的信息。尽管如此,还是没有运气!

标签: python rest pycurl http-status-code-422


【解决方案1】:

不,这通常不存在。某些服务支持对相关路由的 OPTIONS 请求,这应该会返回有关该路由的文档。如果幸运的话,这是从实现路由的相同源代码机器生成的,因此比静态文档更准确。但是,它可能只是返回一个非常简单的摘要,例如支持哪些 HTTP 动词,您已经知道了。

更好的是,一些服务可能支持使用 WSDL 或 WADL 的 API 机器描述,尽管您可能只会发现服务也支持 XML。这可能会更好,因为您将能够找到一个可以解析描述并生成服务的本地对象模型以用于与 API 交互的库。

但是,即使您有 OPTIONS 或 WADL 文件,您所面临的错误类型仍然可能发生。如果这些文件没有帮助,您可能需要联系服务支持团队,证明您的问题并请求帮助。

【讨论】:

  • 感谢您,我尝试了 OPTIONS,但它给了我与执行 GET 相同的结果。我还尝试重新格式化 JSON 以匹配结果,但仍然没有运气。 REST(或 JSON?)是否关心字段是否在元组与字典中?
  • REST 和 JSON 无关紧要,这取决于您的 Python JSON 库,以及它如何转换元组。
  • 我无法让任何工作,因此我将问题发送给供应商并指定他们的开发团队对其进行审查并提供反馈,因为他们似乎最有可能知道这个怎么运作。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-26
  • 1970-01-01
  • 2021-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-03
相关资源
最近更新 更多