在CakePHP 2.x中使用自定义状态代码


Use a Custom Status Code with CakePHP 2.x

我需要为CakePHP 2.x中的响应使用自定义状态代码,例如422

然而,CakeResponse类只允许CakeResponse类中已经设置的状态代码。

有没有一种方法可以让我在CakePHP中使用我的自定义状态代码?

请注意,如果答案是使用自定义CakeResponse类,则存在与此相关的问题。

查找API但只需继续阅读:

查询&设置有效的HTTP响应代码&消息。

/**
 * Queries & sets valid HTTP response codes & messages.
 *
 * @param int|array $code If $code is an integer, then the corresponding code/message is
 *        returned if it exists, null if it does not exist. If $code is an array, then the
 *        keys are used as codes and the values as messages to add to the default HTTP
 *        codes. The codes must be integers greater than 99 and less than 1000. Keep in
 *        mind that the HTTP specification outlines that status codes begin with a digit
 *        between 1 and 5, which defines the class of response the client is to expect.
 *        Example:
 *
 *        httpCodes(404); // returns array(404 => 'Not Found')
 *
 *        httpCodes(array(
 *            381 => 'Unicorn Moved',
 *            555 => 'Unexpected Minotaur'
 *        )); // sets these new values, and returns true
 *
 *        httpCodes(array(
 *            0 => 'Nothing Here',
 *            -1 => 'Reverse Infinity',
 *            12345 => 'Universal Password',
 *            'Hello' => 'World'
 *        )); // throws an exception due to invalid codes
 *
 *        For more on HTTP status codes see: http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html#sec6.1
 *
 * @return mixed associative array of the HTTP codes as keys, and the message
 *    strings as values, or null of the given $code does not exist.
 * @throws CakeException If an attempt is made to add an invalid status code
 */

如果你计划在API中不使用标准代码,我会在x-header中返回代码,或者像Jsend那样在响应中返回代码。