在 Spring API 中是否有更好的方法来接受基于 Header 的内容协商?

Is there better approach to Accept Header based content negotiation in Spring API?

我正在使用内容协商为同一个 REST API 函数定义多个响应,方法是更改​​接受 header.

  1. 接受 header : application/json , 应该给出响应 json (被另一个服务使用)
  2. 接受 header : application/octet-stream ,应该下载相同的 json 响应作为具有自定义文件扩展名的文件,供UI

目前我在接受 header 中通过 application/octet-stream 时得到 406。

这是正确的方法吗?或者我应该将函数拆分为 2 还是使用查询参数更好

Currently i am getting 406 when i pass application/octet-stream in the Accept header.

可能,您正在端点上使用某种注释...

类似:@RequestMapping 或(@GetMapping 或@PostMapping 等)...好吧,该注释包含一个 produces 属性...该属性应具有您的端点的类型在您的情况下,预计会产生:[application/json, application/octet-stream] ...

注意:客户端应向您的端点指示他想要哪种格式...为此,客户端应使用 Accept http header 指定格式 ...

Is this the right approach ? or should i split the function in to 2 or is it better to use query parameters?

对我来说,这是正确的方法,因为您的 API 更简单,并且您使用的是标准提出的机制 ...