通过HTTPD传递JSON错误响应
我所在的团队正在为他们的应用程序创建一个API接口,以便将数据公开给需要它的网站。他们以JSON格式发送请求和响应,但目前在以下问题上受阻 他们编写了API以响应缺少所需数据的请求,错误代码为422: 422不可处理实体(WebDAV;RFC 4918)-请求已被删除 格式正确,但由于语义错误而无法遵循 处理请求并从应用程序服务器返回有效的JSON响应对象,但HTTPD服务器当前正在拦截响应,并在generic ErrorDocument中输入422错误 想知道是否有办法:通过HTTPD传递JSON错误响应,json,apache,intercept,Json,Apache,Intercept,我所在的团队正在为他们的应用程序创建一个API接口,以便将数据公开给需要它的网站。他们以JSON格式发送请求和响应,但目前在以下问题上受阻 他们编写了API以响应缺少所需数据的请求,错误代码为422: 422不可处理实体(WebDAV;RFC 4918)-请求已被删除 格式正确,但由于语义错误而无法遵循 处理请求并从应用程序服务器返回有效的JSON响应对象,但HTTPD服务器当前正在拦截响应,并在generic ErrorDocument中输入422错误 想知道是否有办法: 禁用ErrorDoc
欢迎提出任何其他建议。我们的临时解决方案只是返回一个200响应并在响应中定义错误代码,但如果可能的话,我们更愿意使用HTTP错误代码。在不知道API的URL结构的情况下,我建议在我创建的JSON API中使用类似的内容,该API使用PHP作为框架。将其放入服务器或web应用程序根目录下的
.htaccess
文件中
ErrorDocument 422 /error/422
这样做的目的是将任何422
错误发送到/error/422
的URL路径。这是假设您的服务器设置如下:
http://api.mygreatserver.net/error/422
我在我的.htaccess
中也有一条规则,它按如下方式路由流量:
RewriteRule ^([a-z_-]+)/([0-9]+)/?$ index.php?controller=$1&id=$2 [QSA]
因此基本上,/error/422
在幕后被转换为index.php?controller=error&id=422
。PHP脚本路由到error
,然后error
作用于422
…等等,瞧
如果API本身以某种方式被定位为域的路径,则如下所示:
http://www.mygreatserver.net/api/error/422
ErrorDocument 422 /api/error/422
然后可能是这样的:
http://www.mygreatserver.net/api/error/422
ErrorDocument 422 /api/error/422
一般目标是将任何
422
发送到您控制范围内的预定路径。然后在该控制器中,您可以发送任何您想要的自定义内容。现在提供答案,但您可以提供API设置的示例路径。您不需要使用真正的域/主机,但是结构概述会很好。