查看play.mvc.Http.StatusCode
对象的Play Source code(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 文件正在为 Play 管理这些(我不确定它是否可以做到),否则我无法看到 Play 如何在不了解代码库的情况下神奇地处理这些情况。
查看 renderJSON 的代码,它似乎没有将状态代码设置为发送回结果的一部分(因此使用默认的 200),因此以下 hack可能有效。
public static void myJsonAction() {
response.status = 201;
renderJSON(jsonString); // replace with your JSON String
}