Я немного смущен тем, как обрабатываются ошибки в REST API Wordpress. В своих примерах они предлагают использовать 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":"Error message."}
Со вторым более подробно:
{"code":"rest_custom_error","message":"Error message.","data":{"status":403}}
Но мне также нужно указать код ошибки (первый параметр), что не дает никаких преимуществ моей интерфейсной реализации. Помимо синтаксиса, мне интересно узнать о различиях в производительности, безопасности и факторах будущего.
Так есть ли причина предпочесть одно другому, кроме личных предпочтений?
Вероятно, это связано с тем, как WP обрабатывает ответы. Воспользуйтесь вторым вариантом.






Я делаю следующее:
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)
Это меня тоже смущает. Вы решили это?