V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yoa1q7y
V2EX  ›  问与答

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

  •  
  •   yoa1q7y · 2022-11-09 16:53:52 +08:00 · 599 次点击
    这是一个创建于 774 天前的主题,其中的信息可能已经有所发展或是发生改变。

    看了几篇关于 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
    shenjinpeng
        1
    shenjinpeng  
       2022-11-09 16:59:15 +08:00
    放到 url param 里 , movies 才是资源 , 这里的 categoryId 和 keyword 属于筛选条件
    shenjinpeng
        2
    shenjinpeng  
       2022-11-09 17:01:57 +08:00
    第一种也不算错, 比如查看 某篇新闻下的评论

    ```
    /api/news/1/comment


    /api/news/1/comment/21


    /api/news/comment/21

    ```
    optional
        3
    optional  
       2022-11-09 17:09:10 +08:00 via iPhone
    和 ddd 的聚合根分析差不多,url 是不是放路径里,也去判断 A 能不能脱离 B 单独存在,A 是不是 B 的一部分
    yoa1q7y
        4
    yoa1q7y  
    OP
       2022-11-09 17:13:07 +08:00
    @shenjinpeng https://www.v2ex.com/help/api V2EX 是这样设计的,不过示例有些少
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2636 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:24 · PVG 23:24 · LAX 07:24 · JFK 10:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.