【问题标题】:GET vs POST API for validating docker image is allowed允许使用 GET 与 POST API 来验证 docker 映像
【发布时间】:2020-05-27 10:55:25
【问题描述】:

不确定在这种情况下是使用 GET 还是 POST。我正在创建一个 API,它将返回 docker 映像是否兼容。更好的方法是什么?

场景 1:

GET: https://<hostname>/api/checkImage?image=nginx:latest

场景 2

GET: https://<hostname>/api/checkImage/nginx:latest

场景 3

POST: https://<hostname>/api/checkImage
Payload: {"image": "nginx"}

显然需要对冒号进行 url 编码,但上述所有情况都会返回: {"allowed": false}

【问题讨论】:

  • GET 用于检索有关事物的信息。 POST 用于创建、更改状态或保存数据

标签: python rest api microservices


【解决方案1】:

要理解的重要语义概念是safe

如果定义的语义本质上是只读的,则请求方法被认为是“安全的”

在本规范定义的请求方法中,GET、HEAD、OPTIONS 和 TRACE 方法被定义为安全的。

因此,在您的情况下,资源类似于“图像的合规性报告”;并且 GET 请求要求服务器提供报告的当前表示。服务器可能会选择提供以前缓存的表示,或者它可能会生成新的合规性报告并返回该报告——但这些是与请求语义无关的实现细节。

另一方面,如果我们希望服务器将其对资源的表示更新为较新的内容,那么我们可能会使用 POST,而不是 GET,因为我们试图引发更改,但我们不会想要一个通用缓存来返回报告的陈旧表示。

从客户的角度来看,它可能看起来像

GET /api/checkImage?image=nginx:latest

Oh, this representation is too old, I need something recent

POST /api/checkImage?image=nginx:latest

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2020-11-25
    • 2012-07-25
    • 2022-10-08
    • 2021-08-02
    • 2021-06-21
    • 1970-01-01
    相关资源
    最近更新 更多