提问人:Hack-R 提问时间:10/8/2020 最后编辑:Hack-R 更新时间:10/8/2020 访问量:118
如果 API 文档未发布,如何推断 API 调用应该是什么样子?
How can one infer what an API call should look like if the API documentation isn't published?
问:
我使用了一些 Web 应用程序,我想为它们开发代码。我在 GitHub 上看到其他人为一些相同的应用程序这样做。棘手的部分是这些服务没有已发布的 API 文档。如何推断 API 调用应该是什么样子?
不知何故,其他编码人员能够弄清楚 API 调用应该是什么样子,并编写代码以交互方式构建调用并将其提交到站点。
我想他们必须通过使用基于浏览器的开发工具(例如 Chrome 和 Firefox 中内置的工具)来分析网站来做到这一点,但当我尝试这样做时,它仍然不明显。虽然浏览器 例如,@castlelemongrab正在为 Parler.com 开发库/工具,尽管没有发布的 API。他的库构建了基于 URL 的调用,但是当我在浏览器中重复这些操作时,我从未看到显示的 URL 显示了我在应用程序中执行操作时需要构建的格式(例如:要发布帖子,他的查询使用格式)。由于我无法弄清楚他是如何确定该格式的,因此我也无法弄清楚如何为我想添加的缺失功能编写代码。parlance
v1/post?id=xxxxxx
答:
如果他正在编写代码来传递 URL 参数(似乎是这种情况),您需要在开发人员控制台中查看并“检查”请求。它为您提供了从 URL(和 URL 查询参数)到预期的标头和响应代码等的所有内容。您只需要准确地重新创建浏览器正在执行的操作即可。请务必注意 Content-Type...可能是 url 编码的表单数据,因为这不是“API”,而是网站/Web 应用程序。如果 POST 请求中有表单数据等,检查员还应该显示传递的确切参数。
例如。。。假设你想在程序中提交一些 HTML 来检查它是否有效。https://validator.w3.org/#validate_by_input
首先物理转到该 URL,然后尝试检查按下按钮时发送的请求。然后将其与以下代码进行比较:Check
>>> from requests import post
>>> html_str = """
... <!DOCTYPE html>
... <html>
... <body>
...
... <h1>This is heading 1</h1>
...
... </body>
... </html>"""
>>>
>>> from requests import post
>>>
>>> def html_validator(html_str):
... p = {'fragment': html_str, 'content': 'submit'}
... _ = [print(out) for out in post('https://validator.w3.org/check', files=p).text.split('<')]
...
>>>
>>>
>>> html_validator(html_str)
您会发现它类似于进行 API 调用,但实际上您只是提交一个包含一些数据的表单(与用户按下按钮时在浏览器中执行的操作相同)。如果您不确定“片段”或“内容”来自哪里,也请检查 HTML 表单。它通常是 HTML id 或 name 属性。还要确保“检查”该检查按钮......您将看到一个名为“submit”的 ID 或名称。
评论