创建资源但缺少子引用时的Http状态代码

时间:2018-07-25 07:20:39

标签: rest http-status-codes

请考虑以下资源

-年

-教室

-学生

我使用下一个与之相关的URI创建新资源

  

输入/年/ {year Es:2108}

     

PUT / classrooms / {教室代码Es:ls1sa,ls2sa,ls3sa ...}

     

POST /学生

一个特定年份的学生属于教室,如果他学习,第二年将转到下一个教室。

我想创建一个新的资源关联 一年级学生 使用以下URI

  

/ years / {yearCode} / classrooms / {classroomCode} / students / {studentsId}

在保存新资源之前,我需要检查YearCode,教室代码和StudentId。

缺少先前资源之一时,我应该发送哪个HTTP状态代码?

1 个答案:

答案 0 :(得分:1)

一旦在URL中发送了无效值(该URL用于在服务器中定位资源),您可能会返回404

  

6.5.4. 404 Not Found

     

404(未找到)状态代码表示原始服务器已执行     找不到目标资源的当前表示或找不到     愿意透露存在。 [...]

另一方面,如果要在请求有效负载中发送参数,则可以考虑使用422来指示无法处理请求实体:

  

11.2. 422 Unprocessable Entity

     

422(不可处理实体)状态代码表示服务器     了解请求实体的内容类型(因此     415(不受支持的媒体类型)状态码不正确),并且     请求实体的语法正确(因此400(错误请求)     状态代码不正确),但无法处理其中的内容     说明。例如对于如果XML可能会出现此错误情况     请求正文包含格式正确(即语法正确)的内容,但     语义错误的XML指令。


对于两种情况,响应有效负载都应包含有关错误的详细信息。看看RFC 7807