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