首页 > 解决方案 > REST中通过另一个资源ID命名获取资源的做法是什么

问题描述

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

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

两个问题:

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

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

标签: javaspring-mvcjparestful-urlentities

解决方案


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

RESTAPI 就是这样。

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

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

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

总而言之,如果您的 APP 只是关于城市的天气,那么为两个实体使用同一张表是可以的。但是,如果您希望您的 APP 可用于查询有关多个实体(如人口、学校等)的大量其他信息,那么使用单独的表格是一种更好的方法。我建议为 2 保留单独的表。这种方法还使数据库易于管理。如果您有任何问题,请告诉我。希望这可以帮助 :)


推荐阅读