Skip to content

Commit 8b05e68

Browse files
committed
新增支持增删改查统一入口方法 curd 和 crudByTag;parse(String,HttpSession,RequestMethod) 改为 parse(RequestMethod,String,HttpSession)
1 parent ad66340 commit 8b05e68

1 file changed

Lines changed: 57 additions & 19 deletions

File tree

src/main/java/apijson/framework/APIJSONController.java

Lines changed: 57 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@
3232

3333
import java.lang.reflect.Method;
3434
import java.rmi.ServerException;
35+
import java.util.Arrays;
36+
import java.util.List;
3537
import java.util.Map;
3638

3739
import 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

Comments
 (0)