【问题标题】:GET request with data in bodyGET请求正文中的数据
【发布时间】:2013-06-10 23:04:18
【问题描述】:

我正在实现一个 API 端点,它提供数据但不修改数据 - 它类似于“获取与此过滤器列表匹配的所有项目”,其中过滤器可能类似于“ID > 200”或“propertyA!= null”。

在实际实现中,我必须向端点发送一个数组,在每个 id 的基础上指定一堆资源以 GET 回客户端。像

GET api/tickets

{
    ids: [1, 3, 5, 7, 9],
    filter: "on-sale"
}

据我了解,Restfully 实现的 api 不会将 GET 用于此类请求,因为预计在 url 中仅指定目标资源的 id,而正文中没有内容。

虽然我不想认为我不得不将这个东西放入 PUT 或 POST 请求中。

在这里做什么是正确的?

【问题讨论】:

    标签: rest asp.net-web-api


    【解决方案1】:

    HTTP 不允许您在 GET 正文中发送有意义的信息。但是,您可以在请求 URI 中发送列表。

    这个 URI 完全有效。

    GET /tickets?ids=1,3,5,7,9&filter=on-sale
    

    【讨论】:

    • +1 HTTP GET 请求返回的资源必须可由 URL 标识。请求中其他地方的信息不必为此而必需。除了 HTTP GET 不允许正文中的数据之外,必须忽略此数据以识别请求的资源。
    猜你喜欢
    • 2016-08-24
    • 2021-08-13
    • 2013-06-18
    • 2020-09-07
    • 2017-06-23
    • 2020-04-25
    • 2020-09-20
    • 2023-04-07
    • 1970-01-01
    相关资源
    最近更新 更多