【问题标题】:Passing additional in GET request using REST semantics使用 REST 语义在 GET 请求中传递附加信息
【发布时间】:2012-07-23 19:59:36
【问题描述】:

我正在设计一个 REST API,我想知道允许数据从客户端传递到使用 REST 语义的 GET 请求的正确方法。

一个简单的用例是,当从服务器获取一些数据时,我希望客户端可以选择传递客户端中已经存在的数据的哈希列表,以便服务器可以排除如果数据没有更改,则在其响应中显示该数据。

快速搜索表明使用查询字符串是正确的方法。

例如,

GET /api/v1/Products?productsInClient?id1=MD5_HASH_1&id2=MD5_HASH_2 可能是一种设计。

但是,理想情况下,我希望在请求正文中传递查询字符串数据,因为查询字符串中的 id 数量可能会变得非常长。在 GET 请求的正文中传递此类信息并且仍然符合 REST 语义是否可以接受。

另一种选择是将此作为 POST 请求 - 但我不想这样做,因为该请求并没有真正在服务器上创建新资源。唯一的附加服务器操作是排除客户端中已经存在的某些资源。

【问题讨论】:

  • GET 请求不应使用请求正文来获取数据。只有 POST 请求应该这样做。原因是如果系统严格遵循 HTTP 规范,它将忽略 GET 请求正文中发送的数据
  • 这和他的问题有什么关系?他已经提到他不想使用 POST 请求,并且他也没有在请求正文中发送数据,他正在使用查询字符串。
  • 这是对问题的直接回应,@ryudice。事实上,该评论将是一个不错的答案。

标签: api rest get


【解决方案1】:

您可以为此使用自定义 http 标头。 某些 Web 服务器(例如 iis 6,请参阅here)也可能存在问题,这些问题与 url 的长度有关,出于安全原因可以将长度设置为最大大小,以及 here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2019-06-07
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 2021-05-03
    • 1970-01-01
    相关资源
    最近更新 更多