关于演员、电影、分类的 restful api 设计

2022-11-09 16:53:52 +08:00
 yoa1q7y

看了几篇关于 restful api 规范的文章,看完依然有些疑惑,比如:

获取某个分类下的所有影片: 是

/api/categories/:categoryId/movies

还是

/api/movies?categoryId=xxx

比较好?

主要疑惑于什么部分应该放在 URL 路径里,什么部分应该放在 query 里面

比如按照关键词搜索影片: 是

/api/movies/search/:keyword

还是

/api/movies?keyword=xxx

以我目前的理解,得出的一份“正确”设计为

/api/v2/categories
/api/v2/categories/:category_id
/api/v2/categories/:category_id/movies?page=1
/api/v2/stars?page=1
/api/v2/stars/:star_id
/api/v2/stars/:star_id/movies?page=1
/api/v2/movies?query=xxx
/api/v2/movies/:movie_id

但是如果想根据 category_id 和 star_id 一起筛选,又该怎么办呢

求各位大佬指教

521 次点击
所在节点    问与答
4 条回复
shenjinpeng
2022-11-09 16:59:15 +08:00
放到 url param 里 , movies 才是资源 , 这里的 categoryId 和 keyword 属于筛选条件
shenjinpeng
2022-11-09 17:01:57 +08:00
第一种也不算错, 比如查看 某篇新闻下的评论

```
/api/news/1/comment


/api/news/1/comment/21


/api/news/comment/21

```
optional
2022-11-09 17:09:10 +08:00
和 ddd 的聚合根分析差不多,url 是不是放路径里,也去判断 A 能不能脱离 B 单独存在,A 是不是 B 的一部分
yoa1q7y
2022-11-09 17:13:07 +08:00
@shenjinpeng https://www.v2ex.com/help/api V2EX 是这样设计的,不过示例有些少

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/893898

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX