gpt4 book ai didi

用于过滤资源的 REST API 调用

转载 作者:行者123 更新时间:2023-12-01 23:49:08 33 4
gpt4 key购买 nike

我正在构建一个 REST API,我有一个资源说电影。

1) POST : movies/

2). GET : movies/{movie_id}

调用 1) 创建一个帖子。

调用 2) 当提供 movie_id 时,它返回特定电影的详细信息,否则返回所有电影。

现在我必须根据电影属性(如受欢迎程度、评级等)过滤掉电影

我的疑问是:

是否应该有单独的 URL 来过滤电影,例如
GET: movies/filter/

此调用将具有 GET 参数,例如 popuplar、 rating 等,并且可以根据这些参数过滤掉电影。

不确定处理这种情况的标准方法是什么,请分享您对此的看法,

最佳答案

在这种情况下,我已经看到了两种基本方法。一种是您建议的,即使用单独的 URL movies/filter/并将它们过滤掉。经典的例子是 cars/colors/red/maker/porsche .

另一种是使用查询参数,如果可能,这是我的首选方法。

GET /movies?year=2010&actor=Carrey

变体可以包含每个变体的倍数(当然,URL 编码适当)
GET /movies?year=[2010,2011]&actor=Carrey

我喜欢这种方法,因为它清楚地说:“获取电影列表,但受这些属性的限制”。

我见过并有时在必要时使用的两种变体是尝试将查询参数中的实际搜索词与其他提交分开。当您需要将查询参数用于搜索以外的事情时,通常会出现这些。

第一个是混合,它说,“在特定的子路径中,只搜索并将查询参数视为搜索词。所以像:
GET /movies/filter?year=2010&actor=Carrey

或者如果你喜欢
GET /movies/search?year=2010&actor=Carrey

一个变体是标记任何搜索词
GET /movies?search.year=2010&search.actor=Carrey

最后,我不太喜欢的一个变体是 /search小路
GET /search/movies?year=2010&actor=Carrey

有时是必要的,但我不喜欢它,因为 search是一个 Action ,而不是一个资源,因此不是一个非常 RESTful 的路径。但其他人可能喜欢它。

关于用于过滤资源的 REST API 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27437783/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com