From 86a7ffb642fca4a1e65a53f500b969df915f7c73 Mon Sep 17 00:00:00 2001 From: Redkale Date: Tue, 6 Sep 2022 17:39:23 +0800 Subject: [PATCH] =?UTF-8?q?http=E5=8D=8F=E8=AE=AE=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=E4=B8=8D=E7=AC=A6=E5=90=88method=E8=A6=81=E6=B1=82=E6=97=B6?= =?UTF-8?q?=E6=94=B9=E6=88=90=E8=BF=94=E5=9B=9E405?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/org/redkale/net/http/HttpResponse.java | 10 ++++++++++ src/main/java/org/redkale/net/http/HttpServlet.java | 11 +++++++---- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/redkale/net/http/HttpResponse.java b/src/main/java/org/redkale/net/http/HttpResponse.java index 0d41c356e..c63708b97 100644 --- a/src/main/java/org/redkale/net/http/HttpResponse.java +++ b/src/main/java/org/redkale/net/http/HttpResponse.java @@ -42,6 +42,8 @@ public class HttpResponse extends Response { protected static final byte[] bytes404 = "HTTP/1.1 404 Not Found\r\nContent-Length:0\r\n\r\n".getBytes(); + protected static final byte[] bytes405 = "HTTP/1.1 405 Method Not Allowed\r\nContent-Length:0\r\n\r\n".getBytes(); + protected static final byte[] bytes500 = "HTTP/1.1 500 Internal Server Error\r\nContent-Length:0\r\n\r\n".getBytes(); protected static final byte[] bytes504 = "HTTP/1.1 504 Gateway Timeout\r\nContent-Length:0\r\n\r\n".getBytes(); @@ -983,6 +985,14 @@ public class HttpResponse extends Response { super.finish(false, bytes404); } + /** + * 以405状态码输出 + */ + public void finish405() { + skipHeader(); + super.finish(false, bytes405); + } + /** * 以500状态码输出 */ diff --git a/src/main/java/org/redkale/net/http/HttpServlet.java b/src/main/java/org/redkale/net/http/HttpServlet.java index 6762d7bc5..31ffd0650 100644 --- a/src/main/java/org/redkale/net/http/HttpServlet.java +++ b/src/main/java/org/redkale/net/http/HttpServlet.java @@ -16,7 +16,6 @@ import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES; import static org.redkale.asm.Opcodes.*; import org.redkale.boot.Application; import org.redkale.net.*; -import org.redkale.service.RetResult; import org.redkale.util.*; /** @@ -29,8 +28,10 @@ import org.redkale.util.*; */ public class HttpServlet extends Servlet { + @Deprecated //@since 2.8.0 public static final int RET_SERVER_ERROR = 1200_0001; + @Deprecated //@since 2.8.0 public static final int RET_METHOD_ERROR = 1200_0002; String _actionSimpleMappingUrl; //只给HttpActionServlet使用,_actionSimpleMappingUrl不能包含正则表达式,比如 /json /createRecord, 不能是 /user/** @@ -82,7 +83,8 @@ public class HttpServlet extends Servlet if (request.actionEntry != null) { ActionEntry entry = request.actionEntry; if (!entry.checkMethod(request.getMethod())) { - response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error")); + //response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error")); + response.finish405(); return; } request.moduleid = entry.moduleid; @@ -100,7 +102,8 @@ public class HttpServlet extends Servlet if (request.getRequestURI().startsWith(en.getKey())) { ActionEntry entry = en.getValue(); if (!entry.checkMethod(request.getMethod())) { - response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error")); + //response.finishJson(new RetResult(RET_METHOD_ERROR, "Method(" + request.getMethod() + ") Error")); + response.finish405(); return; } request.actionEntry = entry; @@ -332,7 +335,7 @@ public class HttpServlet extends Servlet final String name; - final String[] methods; + final String[] methods; //不能为null,长度为0表示容许所有method final HttpServlet servlet;