多个国家/地区的REST API结构

时间:2016-11-10 09:04:42

标签: rest api

我正在设计一个REST API,您可以在其中搜索不同国家/地区的数据,但由于您可以同时在不同的国家(最多4个)搜索相同的内容,因此我不确定最佳/正确的方法。

这可以从获取数据开始(我以汽车为例):

/api/uk,us,nl/car/123

该请求可能会为不同的国家/地区返回不同的ID(uk = 1,us = 2,nl = 3),那么在为这3个国家/地区请求数据时该怎么办? 对于一个漂亮的结构,我可以在那时得到一个数据:

/api/uk/car/1
/api/us/car/2
/api/nl/car/3

但这不是很有效率,因为它会在后端击中3次。

我可以这样做:

/api/car/?uk=1&us=2&nl=3

但是,如果我想添加到该路径,那么效果不会很好:

/api/uk/car/1/owner

因为那会变成:

/api/car/owner/?uk=1&us=2&nl=3

哪个看起来不太好。

任何人都有关于如何以良好的方式构建这个的建议吗?

1 个答案:

答案 0 :(得分:1)

我回答了类似的question before,所以我会坚持这个想法: 你有一组元素-cars-并且你想以某种方式过滤它。我的建议是将任何过滤器添加为字段。如果该字段不存在,则根据客户的区域设置选择一个国家/地区:

mydomain.com/api/v1/car?countries=uk,us,nl

当您查找特定车辆或其所有者时,此字段应消失

mydomain.com/api/v1/car/1/owner

因为不需要国家/地区(除非每个国家都重复使用汽车ID 1)

更新

我真的没想到汽车的id可以被几辆车共享,ID应该是唯一的(就像数据库中的主键)。然后,将country参数与所有者的搜索保持一致是有意义的:

mydomain.com/api/v1/car/1/owner?countries=uk,us

这应该返回一个拥有id为1的汽车的人员列表......但对我来说,这个功能没什么意义,在这个搜索中我只允许一个国家:

mydomain.com/api/v1/car/1/owner?country=uk