V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
yoa1q7y
V2EX  ›  问与答

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

  •  
  •   yoa1q7y · Nov 9, 2022 · 898 views
    This topic created in 1269 days ago, the information mentioned may be changed or developed.

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

    ```
    /api/news/1/comment


    /api/news/1/comment/21


    /api/news/comment/21

    ```
    optional
        3
    optional  
       Nov 9, 2022 via iPhone
    和 ddd 的聚合根分析差不多,url 是不是放路径里,也去判断 A 能不能脱离 B 单独存在,A 是不是 B 的一部分
    yoa1q7y
        4
    yoa1q7y  
    OP
       Nov 9, 2022
    @shenjinpeng https://www.v2ex.com/help/api V2EX 是这样设计的,不过示例有些少
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2447 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 03:36 · PVG 11:36 · LAX 20:36 · JFK 23:36
    ♥ Do have faith in what you're doing.