我正在设计一个RESTful API,它目前拥有的资源包含一些可以由客户端更新的元素,而其他元素则不能。举个例子:
{
id : "1234",
firstName : "George",
lastName : "Burdell",
blogPosts : { href : "http://server.com/user/1234/blogposts"}
}
API的客户端可以PUT新资源或PATCH现有资源,但在示例中,他们只能写入firstName
和lastName
。 id
和blogPosts
由服务器生成,不可由客户端修改。
处理尝试写入不可写字段的推荐方法是什么?返回401并忽略整个更新文档? 401是适当的回应吗?
拥有包含可写和不可写元素的资源是个坏主意吗? (我是新手,但似乎它可能经常是不可避免的,特别是在链接到相关资源时的例子中)。
答案 0 :(得分:1)
返回403并且不更新资源。
403禁止
服务器理解请求,但拒绝履行请求。 授权无效,请求不应重复。如果 请求方法不是HEAD,服务器希望公开 为什么请求没有得到满足,它应该描述原因 因为该实体的拒绝。如果服务器不想做 此信息可供客户使用,状态代码404(不是 找到了)可以代替使用。
答案 1 :(得分:0)
如果你不希望他们能够写入JSON对象,我就不会让它们可用,因此如果他们试图写入它就会抛出错误。