Rest 请求的错误响应正文格式,带有“特定”;接受;标题
我的HTTP/restapi有一个资源端点,可以处理通过请求的“Accept”头指定的“application/json”和“text/csv”响应体格式Rest 请求的错误响应正文格式,带有“特定”;接受;标题,rest,http,httpresponse,Rest,Http,Httpresponse,我的HTTP/restapi有一个资源端点,可以处理通过请求的“Accept”头指定的“application/json”和“text/csv”响应体格式 在出现错误的情况下,比如HTTP 400、500响应等,我想知道应该使用什么样的响应体格式来返回错误信息。如果与application/json一起使用,很明显错误信息必须是json格式的。但是在文本/csv或任何其他“外来”mime类型的情况下使用什么格式?如果没有可用的格式,HTTP服务器可以自由忽略接受头 鉴于没有真正的“标准”CSV错
在出现错误的情况下,比如HTTP 400、500响应等,我想知道应该使用什么样的响应体格式来返回错误信息。如果与
application/json
一起使用,很明显错误信息必须是json格式的。但是在文本/csv
或任何其他“外来”mime类型的情况下使用什么格式?如果没有可用的格式,HTTP服务器可以自由忽略接受
头
鉴于没有真正的“标准”CSV错误响应,我将默认为
application/problem+json
,text/html
,甚至可能是text/plain
,我不确定这里是否有正确/错误的答案,但我认为无论请求如何,错误消息体都应该是一种类型(即application/json
)。这是为了简化消费者的错误处理。根据您的服务,消费者可能会对一个请求使用CSV,对另一个请求使用XML,以及json。最后,当确实发生错误时,处理一致的错误响应将是理想的选择。@MoA我想知道是否有某种“最佳实践”关于这个主题。这似乎也是我的最佳解决方案。只是环顾四周,发现了英国土地注册处API(相当成熟的API),它可以以CSV、XML、JSON等格式响应。它们根据格式返回错误,而不是将所有类型设置为一种类型(即与我建议的相反).玩一玩GEThttp://landregistry.data.gov.uk/data/ppi/address.json?town=LONDON
。您可以将.json
更改为.csv
或.xml
。我知道它并不完全像您指定的那样出现在标题上,但结果可能是相关的。也许将错误响应设置为与类型一致是正确的方法。似乎此API在出现错误时返回“text/javascript”内容类型,不管文件扩展名是什么(这是另一种格式检测方法)。至少在出现此类错误时:GEThttp://landregistry.data.gov.uk/data/ppi/address.json?ggre=gregr
。此查询字符串错误的请求返回“text/javascript”格式的HTTP 500格式,在响应体中使用HTML。没错。另一个灵感来源是Oracles API,它返回JSON或XML-https://docs.oracle.com/en/cloud/iaas/messaging-cloud/csmes/using-rest-api.html#GUID-5EA9CC73-0639-4560-8699-706D5A96FB03(错误响应)。似乎是ihmo的最佳解决方案。如用户“Mo A”所述在原始问题的评论中,无论接受请求和内容类型响应是什么,整个API都有相同格式的错误响应对客户端来说更容易处理。@sgt hartman我并不完全同意这一点。我们根据接受头使用text/html错误或application/problem+json错误。浏览器一个漂亮的错误响应,api客户端得到一个可解析的响应=)