【问题标题】:How can you pull HATEOAS API with Python?如何使用 Python 拉取 HATEOAS API?
【发布时间】:2018-02-05 17:17:48
【问题描述】:

我需要通过分页从 API 中提取数据。我已向他们发送了一封支持电子邮件,但尚未回复。

这是他们给我的第一封电子邮件的答复。

API 在结果所在的地方实现了“分页” 每个响应分成 20 个块。为了浏览 页面 HATEOAS 链接在“链接”标题中提供。这些 标头显示访问您的页面所需的完整端点 想。如果结果页数更多,标题将包含 自定义字符串字段 - 链接,其中将包含其他页面的 URL 可以达到的结果。

如果结果页数较多,页眉会包含自定义 字符串字段 - 链接,其中将包含其他页面的 URL 可以达到结果。例如:链接:

<https://api.com:123/public/cook> ; rel="first", <
https://api.com:123/public/cook?page=10> rel="last", <
https://api.com:123/public/cook?page=3> rel="next", <
https://api.com:123/public/cook?page=1> rel="prev"

用 Google 搜索“hateoas python”只提供如何创建它,而不是如何提取数据。

那么,如何从这个 HATEOAS API 的标头中获取链接?我正在使用 Python 3 和最新的稳定 Django。

【问题讨论】:

    标签: python django hateoas


    【解决方案1】:

    如果您只想解析 Link 标头,那么...有包可以做到这一点

    LinkHeader

    从 HTTP Header 转换为有用的数据:

    parse(headers['Link']).to_py() [['http://example.com/foo', [['rel', 'self']]], ['http://example.com', [['rel', 'up']]]]]

    自己创建链接头:

    str(LinkHeader([['http://example.com/foo', [['rel', 'self']]], ... ['http://example.com', [['rel', 'up']]]])) 'http://example.com/foo;相对=自我,http://example.com; rel=up'

    当您意识到它只是以下链接时,HATEOAS 很容易:)

    【讨论】:

    • 通过 ping 和迭代解决了它,直到 API 页面不可用。你的解决方案肯定更整洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 2019-12-25
    • 2014-04-02
    • 2013-07-15
    • 2015-12-03
    • 1970-01-01
    相关资源
    最近更新 更多