我正在设计一个安静的网络服务,并且我预见到的问题将是一个常见问题。 假设你有一个资源网址:
/用户
并且该URL的GET操作返回具有基本详细信息的用户列表。
现在我想为用户创建一个POST操作,但是为了创建一个用户,我需要传递的信息比/ users和任何特定用户url(users / 1等)返回的信息要多。这个可以吗?这种情况的常用方法是什么?
答案 0 :(得分:2)
我认为理想情况是POST用于创建资源的表示形式与获取相同资源时返回的表示形式相同。然而,和所有事情一样,这不是一个硬性规定。例如,如果您拥有用户的属性,例如他们的“信誉”,那么显然将在GET上返回,但在创建POST时不需要。无法想到您需要在创建时提供的任何属性,您不会在GET上报告。您可能会发现需要不同的表示形式,具体取决于请求者。也许只有在所有者请求时才会在GET上返回私有信息,这是您在创建时必须在POST时提供的信息,但是当另一个用户请求资源时,他们不会获取该信息。我认为这不会招致菲尔丁的愤怒。
编辑:为了处理密码(没有想到这些,谢谢),那么我认为在创作时接受它并且在GET上不返回它是不是犯罪。如果在GET表示中为密码返回某种占位符可能会更加安静,以便客户端可以通过填写密码并回发相同的表示来更改密码。