在 PUT 方法上添加参数是一个很好的约定吗?
Is it a good convention to add parameter on PUT method?
说,put 方法可以 return 通过给定的参数包含 ExtraTitle 字段
但是,在 PUT
方法上添加参数是个好主意吗?
这是一个好习惯吗?
@PutMapping(value = "/articles/{articleId}")
Article put(@RequestParam(value = "includeExtraTitle", defaultValue = "false") boolean includeExtraTitle)
是的,这是一个绝对好的方法。
为 POST、PUT 等 HTTP 请求类型添加参数是非常好的推荐方法。
/articles/{articleId}?includeExtraTitle=true
是资源的完美标识符。
PUT
是统一接口中的一种方法,因此可以将 PUT 语义应用于此资源(如果您确定不支持,则可以使用 405 Method Not Allowed 进行响应)。
/articles/{articleId}
/articles/{articleId}?includeExtraTitle=true
/articles/{articleId}?includeExtraTitle=false
您应该明白,从客户端的角度来看,这些是不同资源的标识符。 PUT /articles/{articleId}?includeExtraTitle=false
不会 invalidate 客户端本地缓存的 /articles/{articleId}
副本,因为标识符不匹配。
这三个资源恰好使用相同的“端点”这一事实是您实现的意外,并且在统一接口后面对客户端隐藏。
单个资源具有多种表示形式是完全正常的,但不一定常见。因此,请检查您的用例是否更适合改变 content-type,而不是改变 URI。
说,put 方法可以 return 通过给定的参数包含 ExtraTitle 字段
但是,在 PUT
方法上添加参数是个好主意吗?
这是一个好习惯吗?
@PutMapping(value = "/articles/{articleId}")
Article put(@RequestParam(value = "includeExtraTitle", defaultValue = "false") boolean includeExtraTitle)
是的,这是一个绝对好的方法。
为 POST、PUT 等 HTTP 请求类型添加参数是非常好的推荐方法。
/articles/{articleId}?includeExtraTitle=true
是资源的完美标识符。
PUT
是统一接口中的一种方法,因此可以将 PUT 语义应用于此资源(如果您确定不支持,则可以使用 405 Method Not Allowed 进行响应)。
/articles/{articleId}
/articles/{articleId}?includeExtraTitle=true
/articles/{articleId}?includeExtraTitle=false
您应该明白,从客户端的角度来看,这些是不同资源的标识符。 PUT /articles/{articleId}?includeExtraTitle=false
不会 invalidate 客户端本地缓存的 /articles/{articleId}
副本,因为标识符不匹配。
这三个资源恰好使用相同的“端点”这一事实是您实现的意外,并且在统一接口后面对客户端隐藏。
单个资源具有多种表示形式是完全正常的,但不一定常见。因此,请检查您的用例是否更适合改变 content-type,而不是改变 URI。