3232
3333import java .lang .reflect .Method ;
3434import java .rmi .ServerException ;
35+ import java .util .Arrays ;
36+ import java .util .List ;
3537import java .util .Map ;
3638
3739import javax .servlet .AsyncContext ;
@@ -65,8 +67,10 @@ public class APIJSONController {
6567
6668 @ NotNull
6769 public static APIJSONCreator APIJSON_CREATOR ;
70+ public static List <String > APIJSON_METHODS ;
6871 static {
6972 APIJSON_CREATOR = new APIJSONCreator ();
73+ APIJSON_METHODS = Arrays .asList ("get" , "head" , "gets" , "heads" , "post" , "put" , "delete" );
7074 }
7175
7276 public String getRequestURL () {
@@ -86,20 +90,50 @@ public Parser<Long> newParser(HttpSession session, RequestMethod method) {
8690 return parser ;
8791 }
8892
89- public String parse (String request , HttpSession session , RequestMethod method ) {
93+ public String parse (RequestMethod method , String request , HttpSession session ) {
9094 return newParser (session , method ).parse (request );
9195 }
96+
97+ public String parseByTag (RequestMethod method , String tag , Map <String , String > params , String request , HttpSession session ) {
98+
99+ JSONObject req = AbstractParser .wrapRequest (method , tag , JSON .parseObject (request ), false );
100+ if (req == null ) {
101+ req = new JSONObject (true );
102+ }
103+ if (params != null && params .isEmpty () == false ) {
104+ req .putAll (params );
105+ }
106+
107+ return newParser (session , method ).parse (req );
108+ }
92109
93110 //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
94111
112+ /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一些路由解析性能来提升一点开发效率
113+ * @param method
114+ * @param tag
115+ * @param params
116+ * @param request
117+ * @param session
118+ * @return
119+ */
120+ public String crud (String method , String request , HttpSession session ) {
121+ if (APIJSON_METHODS .contains (method )) {
122+ return parse (RequestMethod .valueOf (method .toUpperCase ()), request , session );
123+ }
124+
125+ return APIJSONParser .newErrorResult (new IllegalArgumentException ("URL 路径 /{method} 中 method 值 " + method
126+ + " 错误!只允许 " + APIJSON_METHODS + " 中的一个!" )).toJSONString ();
127+ }
128+
95129 /**获取
96130 * @param request 只用String,避免encode后未decode
97131 * @param session
98132 * @return
99133 * @see {@link RequestMethod#GET}
100134 */
101135 public String get (String request , HttpSession session ) {
102- return parse (request , session , GET );
136+ return parse (GET , request , session );
103137 }
104138
105139 /**计数
@@ -109,7 +143,7 @@ public String get(String request, HttpSession session) {
109143 * @see {@link RequestMethod#HEAD}
110144 */
111145 public String head (String request , HttpSession session ) {
112- return parse (request , session , HEAD );
146+ return parse (HEAD , request , session );
113147 }
114148
115149 /**限制性GET,request和response都非明文,浏览器看不到,用于对安全性要求高的GET请求
@@ -119,7 +153,7 @@ public String head(String request, HttpSession session) {
119153 * @see {@link RequestMethod#GETS}
120154 */
121155 public String gets (String request , HttpSession session ) {
122- return parse (request , session , GETS );
156+ return parse (GETS , request , session );
123157 }
124158
125159 /**限制性HEAD,request和response都非明文,浏览器看不到,用于对安全性要求高的HEAD请求
@@ -129,7 +163,7 @@ public String gets(String request, HttpSession session) {
129163 * @see {@link RequestMethod#HEADS}
130164 */
131165 public String heads (String request , HttpSession session ) {
132- return parse (request , session , HEADS );
166+ return parse (HEADS , request , session );
133167 }
134168
135169 /**新增
@@ -139,7 +173,7 @@ public String heads(String request, HttpSession session) {
139173 * @see {@link RequestMethod#POST}
140174 */
141175 public String post (String request , HttpSession session ) {
142- return parse (request , session , POST );
176+ return parse (POST , request , session );
143177 }
144178
145179 /**修改
@@ -149,7 +183,7 @@ public String post(String request, HttpSession session) {
149183 * @see {@link RequestMethod#PUT}
150184 */
151185 public String put (String request , HttpSession session ) {
152- return parse (request , session , PUT );
186+ return parse (PUT , request , session );
153187 }
154188
155189 /**删除
@@ -159,27 +193,32 @@ public String put(String request, HttpSession session) {
159193 * @see {@link RequestMethod#DELETE}
160194 */
161195 public String delete (String request , HttpSession session ) {
162- return parse (request , session , DELETE );
196+ return parse (DELETE , request , session );
163197 }
164198
165-
166199 //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
167200
168201
169202 //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
170203
171- public String parseByTag (RequestMethod method , String tag , Map <String , String > params , String request , HttpSession session ) {
172-
173- JSONObject req = AbstractParser .wrapRequest (method , tag , JSON .parseObject (request ), false );
174- if (req == null ) {
175- req = new JSONObject (true );
176- }
177- if (params != null && params .isEmpty () == false ) {
178- req .putAll (params );
204+
205+ /**增删改查统一入口,这个一个方法可替代以下 7 个方法,牺牲一些路由解析性能来提升一点开发效率
206+ * @param method
207+ * @param tag
208+ * @param params
209+ * @param request
210+ * @param session
211+ * @return
212+ */
213+ public String crudByTag (String method , String tag , Map <String , String > params , String request , HttpSession session ) {
214+ if (APIJSON_METHODS .contains (method )) {
215+ return parseByTag (RequestMethod .valueOf (method .toUpperCase ()), tag , params , request , session );
179216 }
180217
181- return newParser (session , method ).parse (req );
218+ return APIJSONParser .newErrorResult (new IllegalArgumentException ("URL 路径 /{method}/{tag} 中 method 值 " + method
219+ + " 错误!只允许 " + APIJSON_METHODS + " 中的一个!" )).toJSONString ();
182220 }
221+
183222
184223// /**获取列表
185224// * @param request 只用String,避免encode后未decode
@@ -262,7 +301,6 @@ public String deleteByTag(String tag, Map<String, String> params, String request
262301 return parseByTag (DELETE , tag , params , request , session );
263302 }
264303
265-
266304 //通用接口,非事务型操作 和 简单事务型操作 都可通过这些接口自动化实现>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
267305
268306
0 commit comments