2011-03-02 100 views
0

我设计一个RESTful Web服务,并有我预见将是一个普遍的问题。 比方说你有一个资源网址:POST/PUT与返回的结构不同的结构可以吗?

/用户

对于那个URL返回与基本资料的用户列表的GET操作。

现在我想为用户创建一个POST操作,但为了创造我需要通过比由/用户和任何特定用户的URL(用户/ 1等)返回更多信息的用户。这个可以吗?这种情况下常用的方法是什么?

回答

2

我认为,理想的是,所有张贴在创建资源的表示是一样的,当你得到相同的资源时,返回的表示。然而,与所有事情一样,这不是一条硬性规定。例如,如果你有一个用户的属性,比如他们的“信誉”,那么很明显,这将在GET上返回,但在创建POST时不需要。无法想象任何您需要在创建时提供的属性,您不会在GET上报告。你可能会发现你需要不同的表示,这取决于谁在请求。也许有私人信息只有在所有者请求时才会返回,这是在创建时必须在POST上提供的信息,但是当另一个用户请求资源时,他们不会获得该信息。我不认为这会引起你菲尔丁的愤怒。

编辑:为了解决密码(没想到这些的,谢谢),那么我不认为这将是一个犯罪接受关于创造,而不是返回上GET。如果在GET表示中返回某种类型的密码占位符可能会很安静,以便客户端可以通过填写密码并发回相同的表示来更改密码。

+0

“不能认为副手的任何属性,你会需要提供创作,你会不会从此以后GET报告。” - 密码字段? :) – bdonlan 2011-03-02 08:47:38

+0

没错,对于一个 – 2011-03-02 08:50:36

+0

确定这样一个密码,密码字段,假设你提供它的创作。如果你提供用户名和密码,那么你可能会使用PUT到/ users/username而不是POST到/ users,并获得一个自动分配的用户名。 – 2011-03-02 09:03:22