Глядя на исходный код Play (Play 1.1) на объект play.mvc.Http.StatusCode
, у Play появляются следующие коды
public static final int OK = 200;
public static final int CREATED = 201;
public static final int ACCEPTED = 202;
public static final int PARTIAL_INFO = 203;
public static final int NO_RESPONSE = 204;
public static final int MOVED = 301;
public static final int FOUND = 302;
public static final int METHOD = 303;
public static final int NOT_MODIFIED = 304;
public static final int BAD_REQUEST = 400;
public static final int UNAUTHORIZED = 401;
public static final int PAYMENT_REQUIERED = 402;
public static final int FORBIDDEN = 403;
public static final int NOT_FOUND = 404;
public static final int INTERNAL_ERROR = 500;
public static final int NOT_IMPLEMENTED = 501;
public static final int OVERLOADED = 502;
public static final int GATEWAY_TIMEOUT = 503;
Это будет означать подтверждение НЕКОТОРЫХ идентифицированных вами кодов, таких как 201, 202, 204. Однако значения 307, 405, 406, 409, 410 и 415 отсутствуют.
Кроме того, 201, 202, 204 подтверждаются, но нигде не упоминаются в исходном коде. Поэтому, если только сервер Netty или один из поставляемых jar-файлов не управляют ими для Play (что я не уверен, что это возможно), я не могу понять, как Play может волшебным образом справляться с этими ситуациями, не зная кодовую базу.
Глядя на код для renderJSON, он, похоже, не устанавливает код состояния как часть отправки результатов обратно (поэтому использует значение по умолчанию 200), поэтому следующий хак может работать.
public static void myJsonAction() {
response.status = 201;
renderJSON(jsonString); // replace with your JSON String
}