play.mvc.Http.StatusCode
オブジェクトのPlayソースコード(Play 1.1)を見ると、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ファイルの1つがPlay用にこれらを管理していない限り(これができるかどうかはわかりません)、コードベースを知らずにPlayがこれらの状況を魔法のように処理する方法を理解できません。
renderJSONのコードを見ると、結果の返送の一部としてステータスコードが設定されていないように見えるため(デフォルトの200を使用)、次のハックが機能する可能性があります。
public static void myJsonAction() {
response.status = 201;
renderJSON(jsonString); // replace with your JSON String
}