首页 > 解决方案 > 如何选择正确的 rest api 端点 url

问题描述

我有 3 个收藏

Stores

网址:/api/stores

Practitioners单个对象具有对存储的引用并具有计划对象

网址:/api/stores/:id/practitioners

Appointments单个对象具有对 store 和从业者的引用并返回已预订的约会

网址:/api/stores/:id/appointments

我想要的是获得单个从业者的可用预约时间,但我不确定请求应该采用 RESTful api 方式的端点 url

标签: rest

解决方案


资源可以被认为是文档的概括。

URL/URI 是文档特定实例的标识符。

REST 不关心您对标识符使用什么拼写,这意味着您在设计中拥有额外的自由——您可以选择其他有用的拼写。通常的答案是选择一种拼写,该拼写向人们提供了正在识别哪个文档实例的提示。

这个想法是标识符应该在文档中有意义,或者当它们出现在访问日志或浏览器历史记录中时。

在您的情况下,您有描述可用约会时间的文档,因此通常的答案是弄清楚该文档的名称是什么,然后使用 RFC 3986 的约束来确定如何表达该名称。

如果您可以访问域专家,他们可能会告诉您该文档在您的域中是什么。但它可能是 aschedule或 a calendar

问题是 REST API 期望您在引用例如 /api/practitioners 时访问集合

这不是REST 约束/api/practitioners标识资源,并且该资源支持与网络上所有其他资源相同的语义。

对资源标识符及其表示的约束来自其他地方。

例如,JSON:API 将主要数据限制为“单一资源”和“资源集合”,并限制每个资源的表示。Atom Pub 描述了成员和集合。 Rails生成一系列相关资源。

但是REST 架构风格的参考应用程序是万维网


推荐阅读