php WP_REST_响应与WP_错误

gupuwyp2  于 2023-02-21  发布在  PHP
关注(0)|答案(2)|浏览(142)

我对WordPress的REST API中错误的处理方式有点困惑,在他们的示例中,他们建议使用WP_Error来返回错误,但是WP_REST_Response将HTTP状态代码作为第二个参数,这使得它更短,更符合我的口味。
所以我比较一下这种返回错误的方法:

return new WP_REST_Response(array('error' => 'Error message.'), 400);

有了这个:

return new WP_Error('rest_custom_error', 'Error message.', array('status' => 400));

对于第一个选项,我可以在响应中只包含错误文本,这对我来说已经足够了,所以响应如下所示:
{" error ":"错误消息。"}
第二个更详细:
{"代码":" rest_custom_error ","消息":"错误消息.","数据":{"状态":403}}
但是我还需要指定错误代码(第一个参数),这对我的前端实现没有任何好处,除了语法之外,我对性能、安全性和未来因素的差异很感兴趣。
那么,除了个人喜好之外,还有什么理由让我们更喜欢其中一个呢?

sxissh06

sxissh061#

我做如下:

WP_REST_Response // Used when endpoint code runs just fine but needs to 
                 // tell the client about some other downstream error (e.g. 4xx)
WP_Error // Used when endpoint code has an issue and needs to tell you
         // it didn't compute or couldn't find resources etc (e.g. 5xx)
fcg9iug3

fcg9iug32#

据我所知,WordPress会以不可预知的方式更改响应的状态代码。这很愚蠢。例如,如果你创建一个状态为400的WP_REST_RESPONSE,它实际上会将其发送为状态200,并在正文中以“status:400”作为数据。
我做什么:只使用PHP响应函数:

http_response_code(400);
exit;

如果你说我错了,请解释一下使用这两个函数 Package 器的好处。如果你为Automattic工作,并且在core本身创建回归,我就能看到好处。如果你是一个插件或主题开发者,[并且你假设core工作]这些函数应该避免使用。

相关问题