代码之家  ›  专栏  ›  技术社区  ›  Trace

为具有微服务的帖子设计rest api

  •  0
  • Trace  · 技术社区  · 6 年前

    我有一个关于rest api的“琐碎”问题,但是我更喜欢从一开始就设计好。
    帖子可以由用户请求,也可以由google_place_id请求。
    如果没有微服务架构,我会选择这样设计rest api:

    基本uri/gplaces/:gplaceid/posts
    基本uri/users/:用户id/posts

    在使用微服务时,我更需要一个微服务“用户”、“帖子”和“gplaces”。

    在这种情况下,我的端点可能如下所示:

    基本uri/posts/gplaces/:gplaceid
    基本uri/posts/users/:用户id

    这对我来说没有意义,或者:

    基地/岗位?类型=按地点和地点ID=?
    基地/岗位?type=按用户&u;用户&u id=?

    不过,我更愿意使用第一个选项(变体gplaces/:gplaceid/posts)。

    是否有人反对在微服务架构中使用另一个域作为第一个路径段?(通常基uri/gplaces属于gplace api)。

    1 回复  |  直到 6 年前
        1
  •  0
  •   codebrane    6 年前

    如果每个微服务都是一个独立的服务,用户、帖子、地点各一个,那么我认为URL应该是:

    放置微服务:

    base_uri/:gplaceId
    

    用户微服务:

    base_uri/:userId
    

    发布微服务:

    base_uri/user/:userId
    base_uri/place/:gplaceId
    

    考虑到:

    ?type=by_user&user_id=? 
    

    类型是多余的,因为您要用第二个参数标识类型 user_id gplace_id 是的。我只是觉得在uri中编码你需要的东西更简洁

    每个微服务都有一个隐式契约。返回用户、位置或帖子,使url中的任何内容超出获取该信息所需的范围是不相关的。