【问题标题】:REST API Parameter precedenceREST API 参数优先级
【发布时间】:2012-01-20 08:44:46
【问题描述】:

我正在创建一个 REST API。假设我正在服务的资源称为object,它包含许多属性。

除了像这样请求整个对象集

GET api.example.com/objects

我想通过提供objectid 或objectname 来允许请求单个对象, 像这样

GET api.example.com/objects?objectid=
GET api.example.com/objects?objectname=

我很困惑的是,我应该如何处理这样的请求?

GET api.example.com/objects?objectid=x&objectname=y

在这种情况下,我应该返回一个400 Bad Request,还是应该其中一个参数优先于另一个? REST 如何定义这种行为?

【问题讨论】:

    标签: api http rest


    【解决方案1】:

    REST 通常假设资源有一个唯一的 URL,所以它是:

    GET api.example.com/objects/objectId
    

    参数通常用于搜索,所以你会有类似的东西:

    GET api.example.com/objects?objectName=x
    

    【讨论】:

    • 在多个搜索参数的情况下,它们被认为是AND还是OR?
    • 我不知道 REST 建议是什么,但我通常将 AND 用于不同的参数,将 OR 用于单个参数的列表参数,因此 ?type=2,3&parent=10 代表 ( parent = 10 与(类型 = 2 或类型 = 3)
    【解决方案2】:

    更好的方法是在参数字符串中使用通用键来检索特定资源的字段值

    GET api.example.com/objects/objectId?field=objectName,anotherField
    

    它补充了 xpapad 的建议,并且可以在您定义一致的 API 设计方法时添加可扩展结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-03
      • 2016-08-04
      • 2017-05-21
      • 2010-12-01
      • 1970-01-01
      • 2012-01-27
      • 2021-08-20
      相关资源
      最近更新 更多