Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 请求的错误响应正文格式,带有“特定”;接受;标题_Rest_Http_Httpresponse - Fatal编程技术网

Rest 请求的错误响应正文格式,带有“特定”;接受;标题

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/restapi有一个资源端点,可以处理通过请求的“Accept”头指定的“application/json”和“text/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客户端得到一个可解析的响应=)