java - REST中通过另一个资源ID命名获取资源的做法是什么
问题描述
我正在通过城市服务创建 RESTful 天气,即客户端知道城市 ID 并希望从该城市接收 JSON 格式的天气报告。例如:
{temperature:xxx, humidity:xxx, pressure:xxx}
两个问题:
- 获取 URL 应该是什么?(我的第一个想法
api/v1/WeatherByCityId/{cityid
:)但它看起来很原始和不整洁......或者它可以吗? - 我是否需要创建两个实体:
City (table="cities")
并Weather (table="weathers")
创建关系?或者更好地创建一个实体WeathersCities(table="weathers_cities")
(或其他......)?
(我不会使用 3rd 方天气服务,请不要推荐 RestTemplate、WebClient、FeignClient 等。是的,我会每小时自己填写天气数据。
解决方案
假设您想获取一个城市的天气,让我们将城市单独存储在一个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 保留单独的表。这种方法还使数据库易于管理。如果您有任何问题,请告诉我。希望这可以帮助 :)
推荐阅读
- c# - 使用 Asp.net Web Api 时面临的问题,详细信息如下:
- wordpress - 联系表格 7 添加特殊 ID
- c# - 从 c# 执行中检索输出
- python - Google or-tools:如果解决方案和模型已知,则导出并加载 GLOP 线性求解器
- talend - 如何使用 Talend 从矩阵中提取每两列?
- java - 文件阅读器java
- python - n 选择 k 的 Python 代码 - 它是如何工作的?
- typescript - 创建一个与样式组件具有相同道具类型的 React 组件?
- javascript - 如何处理快递中的无效json?
- vba - VBA 在其他机器上的 ParagraphFormat.LeftIndent 处导致错误 5149 的原因