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

问题描述 投票:0回答:2

我正在按城市创建RESTful天气,即客户知道城市ID,并希望在该城市接收天气JSON {温度:xxx,湿度:xxx,压力:xxx}

2个问题:

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

(我不会使用第三方气象服务,请不要建议RestTemplate,WebClient,FeignClient等。是的,我每小时都会自己填写天气数据)

java spring-mvc jpa restful-url entities
2个回答
2
投票

[假设您要获取城市的天气,让我们将城市分别存储在City表中,并将City Id作为主键,然后将与该城市有关的所有与天气相关的数据存储在单独的表Weather中通过保留外键城市ID。

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保留单独的表。此方法还使数据库易于管理。如果您有任何疑问,请告诉我。希望这会有所帮助:)


1
投票

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

您建议的URL是一种不错的方法,如果要进行GET映射,则将更易于维护。

api/v1/weather/{cityid}

使用起来会更加灵活。

© www.soinside.com 2019 - 2024. All rights reserved.