我正在尝试向 REST 端点添加新的内容类型。目前它只返回 json 但我现在还需要能够返回一个 CSV 文件。
据我所知,最好的方法是使用Accept
带有值的标头,text/csv
然后添加一个能够对此做出反应并将返回的正文转换为正确CSV
表示的转换器。
我已经能够做到这一点,但是我在处理异常时遇到了问题。直到知道,所有返回的错误都在json
. 前端期望任何500
状态代码都包含带有错误的特定主体。但是现在,通过添加返回application/json
或返回text/csv
到我的端点的选项,如果发生错误,用于转换正文的转换器将是jackson
转换器或我的自定义转换器,具体取决于Accept
传递的标头。此外,我的前端将需要读取content-type
返回的值并根据返回的表示类型解析值。
这是处理这种情况的正常方法吗?
更快的解决方法是忘记Accept
标头并包含指示预期格式的 url 参数。这样做,我将能够content-type
直接在控制器中更改响应和数据解析,因为GET
请求不会包含任何Accept
标头,并且它将能够接受任何内容。代码的某些部分已经在执行此操作,其中唯一预期的响应格式是,因此除非有更好的处理方法,否则CSV
我将很难为标头的使用辩护。Accept