我正在使用 PHP 和 apache 开发一些基本的 RESTful Web 服务,我想知道是否应该构建提供父实体名称的 URL。让我更好地解释一下:
我有 2 个实体,假设国家和城市。我现在只是提供 WS 来获取、创建、更新或删除城市,但 API 不支持通过 WS 进行国家/地区操作。我正在使用mod_rewrite重新映射 url ,并在 api 中提供以下 url 来操作城市:
. GET /api/countries/<country_id>/cities cities of country with id <country_id>
. GET /api/countries/<country_id>/cities/<city_id> city with id <city_id>
. POST /api/countries/<country_id>/cities add a city to country with id <country_id>
. PUT /api/countries/<country_id>/cities/<city_id> update the city whose country has id <country_id>
. DELETE /api/countries/<country_id>/cities/<city_id> delete city ...
我开始仔细查看这些 url,我很困惑是否应该提供父实体名称和 id。我做了一个很好的假设,城市不能分配到一个以上的国家,即它不是多对多的关系。假设这一点,我认为可以为许多 API 函数提供更短的 URL 模式。例如,如果客户想要删除某个城市,发送以下内容就足够了:
. DELETE /api/cities/14
我知道一个城市属于一个国家,客户端在发出请求之前不需要找出国家ID。
除了第一个(获取所有国家/地区的城市)之外,大多数 url 都可以转换为这种较短的 url。
这是我第一次开发 Web 服务,我没有阅读太多关于它的内容,所以我可能会误解一些东西。我能得到一些建议吗?非常感谢,对我的初级英语感到抱歉。
EDIT1:我认为这个问题可以概括为“我应该如何处理 API url 中的实体关系?”