使用只读元素的资源的RESTful部分更新?

时间:2012-02-27 18:44:24

标签: web-services rest

我正在设计一个RESTful API,它目前拥有的资源包含一些可以由客户端更新的元素,而其他元素则不能。举个例子:

{
    id : "1234",
    firstName  : "George",
    lastName   : "Burdell",

    blogPosts : { href : "http://server.com/user/1234/blogposts"}
}

API的客户端可以PUT新资源或PATCH现有资源,但在示例中,他们只能写入firstNamelastNameidblogPosts由服务器生成,不可由客户端修改。

处理尝试写入不可写字段的推荐方法是什么?返回401并忽略整个更新文档? 401是适当的回应吗?

拥有包含可写和不可写元素的资源是个坏主意吗? (我是新手,但似乎它可能经常是不可避免的,特别是在链接到相关资源时的例子中)。

2 个答案:

答案 0 :(得分:1)

返回403并且不更新资源。

  

403禁止

     

服务器理解请求,但拒绝履行请求。   授权无效,请求不应重复。如果   请求方法不是HEAD,服务器希望公开   为什么请求没有得到满足,它应该描述原因   因为该实体的拒绝。如果服务器不想做   此信息可供客户使用,状态代码404(不是   找到了)可以代替使用。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

答案 1 :(得分:0)

如果你不希望他们能够写入JSON对象,我就不会让它们可用,因此如果他们试图写入它就会抛出错误。