根据此处的示例What are best practices for REST nested resources?
来回答此问题如果您想获取一名员工为其工作的公司,端点将是什么样?我可以看到的选项是:
GET /companies?employeeId=x
可能会返回employeeId = x GET /companies/by-employee/{employeeId}
将返回一家公司。该端点从Linux系统上的/ dev / disks /符号链接中获得了一些启发。基本上,所有子实体都以公司为别名GET /employees/{employeeId}/company
将返回一家公司并颠覆员工与公司之间的关系答案 0 :(得分:0)
如果您想获取一名员工为其工作的公司,端点将是什么样?
REST不在乎您为资源标识符使用什么拼写。
考虑浏览器在加载HTML页面时的工作方式。假设有一个img标签;标签为浏览器提供了所需的语义上下文,以便它可以发送对图像的请求(尤其是发送具有其首选 image 类型的请求)。浏览器不必解析URL,查找文件扩展名或类似的东西即可确定资源是图像。
尝试将语义编码为URI是错误的方法;语义属于links。
如果您正在设计REST API,那么您想要的类似于
Link: </F4EEFDD3-44D9-41AD-8299-620ECD8765DB>; rel="https://schema.org/Organization"
翻译:此链接“指向”作为当前上下文组织的资源。
客户端和服务器需要签订合同,以HTML规范描述a elements,img elements等语义的相同方式,描述可能的链接及其含义。上。
如果已准备就绪,则客户端通过跟随链接来遵循协议,并且服务器可以选择他们喜欢的任何链接拼写(例如,以充分利用caching的优势)。
如您所见,从客户端的角度来看,标识符的拼写无关紧要(与变量名的拼写无关紧要的事实非常相似)。
Link: </F4EEFDD3-44D9-41AD-8299-620ECD8765DB>; rel="https://schema.org/Organization"
Link: </companies?employeeId={employeeId}>; rel="https://schema.org/Organization"
Link: </companies/by-employee/{employeeId}>; rel="https://schema.org/Organization"
Link: </employees/{employeeId}/company>; rel="https://schema.org/Organization"
/companies?employeeId={employeeId}
是一个方便的标识符,因为您还可以通过HTML的form processing rules利用它。
/companies/by-employee/{employeeId}
和/employees/{employeeId}/company
可能很方便,因为您可以利用relative resolution和点段来链接到标识符层次结构中方便位置的其他资源。
推荐观看:蒂尔科夫的REST: I Don't Think It Means What You Think It Means。