0

我见过一些这样的问题,但它们来自几年前,我想知道这些天是否有更好的标准。

假设我的 API 如下所示:

/api/people
 ?age=21
 &name=\w*
 &country=Something
 &state=Someplace
 &city=Somewhere
 &language=English
 &includeRelatives=True|False
 &includePersonalDetails=True|False
 &includePersonalPreferences=True|False
 &includeTravelDetails=True|False
 &includeOtherStuff=True|False

等等。这对我来说看起来不太好。

其他人推荐了这种方法(对于“include*”参数)

&includes=relatives,personaldetails,personalpreferences,traveldetails,otherstuff

因此,客户可以选择加入他们想要包含在一个参数中的内容。

综上所述,假设查询参数列表实际上比这更长,那么对于适当的 RESTful API,什么是好的模式/实践?

4

2 回答 2

2

一种常见的方法是 POST 到您的人员集合,您的数据在 http 正文中定义的 Json 或 xml 结构中。然后,您的 api 将返回创建的 201 以及人员记录的唯一信息。

然后将专门发布(或可能是补丁)该资源的更新。PUT 可用于完全替换记录。

例如。POST /people 创建新资源 POST/PATCH /people/123 更新 PUT /people/123 以用新内容替换所有数据。

我不认为有一个全球公认的休息标准,但有一些普遍接受的通用方法和很多意见!:-)

凯夫。

于 2013-09-07T08:12:46.213 回答
0

您可以使用definedvsundefined而不是Truevs来获得更短的 URI False

例如:

http://acme.org/people?includePersonalDetails&includeOtherStuff 

代替

http://acme.org/people?includeRelatives=False&includePersonalDetails=True&includePersonalPreferences=False&includeTravelDetails=False&includeOtherStuff=True

仅当您将所有布尔选项设置为true.

于 2013-09-07T15:53:30.217 回答