yoa1q7y
V2EX  ›  问与答

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

By yoa1q7y at 2022 年 11 月 9 日 · 1245 次点击

看了几篇关于 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 一起筛选,又该怎么办呢

求各位大佬指教

4 条回复  •  2022-11-09 17:13:07 +08:00
urlk
   1
urlk  
   2022 年 11 月 9 日
放到 url param 里 , movies 才是资源 , 这里的 categoryId 和 keyword 属于筛选条件
urlk
   2
urlk  
   2022 年 11 月 9 日
第一种也不算错, 比如查看 某篇新闻下的评论

```
/api/news/1/comment


/api/news/1/comment/21


/api/news/comment/21

```
optional
   3
optional  
   2022 年 11 月 9 日 via iPhone
和 ddd 的聚合根分析差不多,url 是不是放路径里,也去判断 A 能不能脱离 B 单独存在,A 是不是 B 的一部分
yoa1q7y
   4
yoa1q7y  
OP
   2022 年 11 月 9 日
@shenjinpeng https://www.v2ex.com/help/api V2EX 是这样设计的,不过示例有些少
© 2026 V2EX · 28ms · 3.9.8.5