REST 中通过另一个资源 ID 命名获取资源的做法是什么

What is the practice in REST to name getting a resource by another resource ID

我正在按城市服务创建 RESTful 天气,即客户知道城市 ID 并希望从该城市接收 JSON 的天气报告。例如:

{temperature:xxx, humidity:xxx, pressure:xxx}

两期:

  1. Get URL 应该是什么? (我的第一个想法:api/v1/WeatherByCityId/{cityid)但它看起来很原始和凌乱......或者可以吗?
  2. 我是否需要创建两个实体:City (table="cities")Weather (table="weathers") 并建立关系?或者更好地创建一个实体 WeathersCities(table="weathers_cities")(或其他...)?

(我不会使用第三方天气服务,请不要推荐RestTemplate、WebClient、FeignClient等。是的,我会每小时自己填充天气数据。

假设您想获取一个城市的天气,让我们将城市单独存储在 City table 中,并将 City Id 作为主键并将所有天气相关通过保留外键城市 ID table Weather 中单独的城市数据。

RESTAPI 就是这样。

https://yourdomain.com/api/v1/city/{cityId}/weather

如果您的应用程序的范围可能会在以后增加,那么您可以重复使用相同的 table 原则,然后 RESTAPI 将是

https://yourdomain.com/api/v1/city/{cityId}?parameter=any_entity_you_have_mapped_with_city

To summarize this, If your APP is just going to be about weather in the city then having a same table for both entities is okay. However, if you want that your APP can be used for querying a lot of other information about multiple entities like population, schools, etc then having a seperate table is a much better approach. I would recommend keeping seperate tables for the 2. This approach also makes the DB highly manageable. Let me know if you have some questions. Hope this helps :)

首选城市与天气的一对多映射。 您的天气 table 将 city_id 作为映射的外键。

您建议的 URL 是一个很好的方法,如果您要进行 GET 映射,将更容易维护。

api/v1/weather/{cityid}

这样用起来会更灵活