我有一个RESTful API方法,它创建/更新实体(例如POST /classes
或PUT /classes/:id
)几个参数。其中一个参数(例如teacher
)是另一种其他实体的ID。当参数实体不存在(或访问被拒绝)时,RESTful API方法[POST/PUT]的适当响应代码
我的问题是,当参数指示的实体不存在(或用户无权访问此实体)时,此方法的正确响应代码是什么。
我的选择是(对于POST和PUT方法):
- 404如果从参数实体不存在,
- 403,如果我们从参数到实体没有访问(但关于此实体存在的信息不是秘密),
- 404如果我们没有从参数访问实体(万一关于此实体的信息应该保密)。
我觉得这是非常具有描述性和清晰的(以及一些错误信息)。但是,我想考虑潜在的替代方案或确认我的方法不是一个糟糕的设计。