在 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。