rest - 如何选择正确的 rest api 端点 url
问题描述
我有 3 个收藏
Stores
网址:/api/stores
Practitioners
单个对象具有对存储的引用并具有计划对象
网址:/api/stores/:id/practitioners
Appointments
单个对象具有对 store 和从业者的引用并返回已预订的约会
网址:/api/stores/:id/appointments
我想要的是获得单个从业者的可用预约时间,但我不确定请求应该采用 RESTful api 方式的端点 url
解决方案
资源可以被认为是文档的概括。
URL/URI 是文档特定实例的标识符。
REST 不关心您对标识符使用什么拼写,这意味着您在设计中拥有额外的自由——您可以选择其他有用的拼写。通常的答案是选择一种拼写,该拼写向人们提供了正在识别哪个文档实例的提示。
这个想法是标识符应该在文档中有意义,或者当它们出现在访问日志或浏览器历史记录中时。
在您的情况下,您有描述可用约会时间的文档,因此通常的答案是弄清楚该文档的名称是什么,然后使用 RFC 3986 的约束来确定如何表达该名称。
如果您可以访问域专家,他们可能会告诉您该文档在您的域中是什么。但它可能是 aschedule
或 a calendar
。
问题是 REST API 期望您在引用例如 /api/practitioners 时访问集合
这不是REST 约束。 /api/practitioners
标识资源,并且该资源支持与网络上所有其他资源相同的语义。
对资源标识符及其表示的约束来自其他地方。
例如,JSON:API 将主要数据限制为“单一资源”和“资源集合”,并限制每个资源的表示。Atom Pub 描述了成员和集合。 Rails生成一系列相关资源。
但是REST 架构风格的参考应用程序是万维网。
推荐阅读
- artifactory - 神器备份
- scala - Spark Streaming - 加入多个kafka流操作很慢
- avro - 定义 Avro 模式
- excel - 无法插入超出范围的行?
- javascript - 将 Django DateTime 对象序列化为 json 然后实例化 JS Date 对象并返回的最佳方法是什么?
- jquery - 如何在按钮单击时显示 jquery 确认对话框?
- xml - svg use 如何改变 xslt 变量的变量范围?
- javascript - 如何访问变量内的变量?(JavaScript)
- c# - Win32Exception:指定的服务不作为已安装的服务存在
- reactjs - 如何添加包(这是github上指定分支上的文件夹)以响应package.json