2012-02-27 52 views
1

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

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

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

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

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

是否有包含可写元素和不可写元素的资源是一个坏主意? (我是这方面的新手,但似乎通常是不可避免的,特别是在链接到相关资源时的例子中)。

回答

1

返回403并且不更新资源。

403禁止

服务器理解了请求,但拒绝执行。 授权不起作用,请求不应重复。如果 请求方法不是HEAD,并且服务器希望公开 为什么请求没有被满足,它应该描述在实体中拒绝的原因 。如果服务器不希望向客户端提供此信息,则可以使用状态代码404(不是 找到)代替。

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

0

如果你不想让他们有能力写入JSON对象,我不会让它们可用,因此如果他们尝试写入它,就会抛出一个错误。