请求未提供 ID 的 REST 端点的命名约定
Naming convention for REST endpoint where ID is not provided by request
我遇到了一个小问题,我似乎无法弄清楚如何命名特定的 API 端点。
资源结构如下所示:
students/{student-id}/exams
使用 POST 请求,我想为特定学生添加新考试。但是,请求中未提供我们用于查询学生集合的学生 ID。相反,API 逻辑根据当前用户会话检索学生的 ID。
我考虑过将端点命名为:
POST students/current-session/exams
但这对我来说似乎不对。
那么,您建议为该端点起一个好的 RESTful 名称是什么?我不能使用查询参数,因为这是 POST.
REST 不关心标识符的拼写。你可以使用任何你喜欢的东西。
有很多可能的候选人,他们都很好。
用于此用例的标识符需要与 students
层次结构保持一致没有特别的原因——如果它使您的实施更简单,那很好,但对消费者没有特别的优势。
/my/exams
/students/current/exams
/777BC64D-AE19-4544-9757-E305188E9237
/777BC64D-AE19-4544-9757-E305188E9237/exams
这些都很好。在很多方面,为资源标识符选择拼写就像为变量名选择拼写一样——只有阅读它的人才真正重要。
我遇到了一个小问题,我似乎无法弄清楚如何命名特定的 API 端点。
资源结构如下所示:
students/{student-id}/exams
使用 POST 请求,我想为特定学生添加新考试。但是,请求中未提供我们用于查询学生集合的学生 ID。相反,API 逻辑根据当前用户会话检索学生的 ID。
我考虑过将端点命名为:
POST students/current-session/exams
但这对我来说似乎不对。
那么,您建议为该端点起一个好的 RESTful 名称是什么?我不能使用查询参数,因为这是 POST.
REST 不关心标识符的拼写。你可以使用任何你喜欢的东西。
用于此用例的标识符需要与 students
层次结构保持一致没有特别的原因——如果它使您的实施更简单,那很好,但对消费者没有特别的优势。
/my/exams
/students/current/exams
/777BC64D-AE19-4544-9757-E305188E9237
/777BC64D-AE19-4544-9757-E305188E9237/exams
这些都很好。在很多方面,为资源标识符选择拼写就像为变量名选择拼写一样——只有阅读它的人才真正重要。