假设我想接近REST原则,如果我有一个名为students的资源和一个名为courses的资源,我可以预订一个这样的课程:
PUT: api/courses/{courseId}/students/{studentId}我本能地想列出这样的学生预订:
GET: api/courses/{courseId}/students但是我想包含一些与预订相关的信息(比如预订号),这意味着第三个映射的资源。
因此,我建议,要获得学生预订,我们需要一个单独的预订资源,这可能是这样的:
GET: api/courses/{courseId}/student-bookings我的问题是:是否有人认为上述方法存在问题,因为我用于创建预订的端点与用于检索已创建的预订的端点不同?
编辑:另一个让我感觉更好的选择是下面的内容,尽管它并没有真正改变这个问题,它涉及使用与创建资源不同的端点访问创建的资源:
GET: api/courses/student-bookings?courseId={courseId}发布于 2018-06-29 13:39:04
假设我想接近休息原则..。
REST并不关心URI的设计。但是,使用正确标识资源并允许API发展的URI被认为是一种良好的实践。
我理解预订(或注册)是一种新的资源,它有自己的属性。
所以,除了/api/courses和/api/students,我还有/api/enrollments,它可以映射出一门课程和一名学生之间的关系。
可以使用POST请求创建注册,如下所示:
POST /api/enrollments HTTP/1.1
Host: example.org
Content-Type: application/json
{
"course": "designing-wep-apis",
"student": "john.doe"
}HTTP/1.1 201 Created
Location: /api/enrollments/20180012以下请求可用于检索特定课程的所有注册:
GET /api/enrollments?course=designing-wep-apis HTTP/1.1
Host: example.org
Accept: application/json以下是检索特定学生的所有入学情况:
GET /api/enrollments?student=john.doe HTTP/1.1
Host: example.org
Accept: application/jsonhttps://stackoverflow.com/questions/51102598
复制相似问题