Skip to content

Commit 0037e3a

Browse files
committed
Java:APIJSONBoot-MultiDataSource 从 APIJSONBoot 同步对应的源码
1 parent 34e66ce commit 0037e3a

File tree

16 files changed

+116
-28
lines changed

16 files changed

+116
-28
lines changed
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@
5353

5454

5555
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 <<<<<<<<<< -->
56-
<dependency>
56+
<!-- <dependency>
5757
<groupId>com.github.Tencent</groupId>
5858
<artifactId>APIJSON</artifactId>
5959
<version>4.7.2</version>
@@ -67,7 +67,7 @@
6767
<groupId>com.github.APIJSON</groupId>
6868
<artifactId>apijson-column</artifactId>
6969
<version>1.1.2</version>
70-
</dependency>
70+
</dependency> -->
7171
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 >>>>>>>>>> -->
7272

7373
<!-- 需要用的数据库 JDBC 驱动 -->

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/boot/DemoController.java

Lines changed: 91 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@
9090
* <br > 建议全通过HTTP POST来请求:
9191
* <br > 1.减少代码 - 客户端无需写HTTP GET,PUT等各种方式的请求代码
9292
* <br > 2.提高性能 - 无需URL encode和decode
93-
* <br > 3.调试方便 - 建议使用 APIJSON在线测试工具 或 Postman
93+
* <br > 3.调试方便 - 建议使用 APIAuto(http://apijson.cn/api) 或 Postman
9494
* @author Lemon
9595
*/
9696
@Service
@@ -187,6 +187,94 @@ public String delete(@RequestBody String request, HttpSession session) {
187187
}
188188

189189

190+
//以上接口对应的简版接口,格式为 {method}/{tag}?format=true&@explain=true.. <<<<<<<<<<<<<<<<<<<<<<<<<
191+
192+
/**获取
193+
* @param request 只用String,避免encode后未decode
194+
* @param session
195+
* @return
196+
* @see {@link RequestMethod#GET}
197+
*/
198+
@PostMapping("get/{tag}") // 虽然看起来 APIAuto 更好识别是否为 APIJSON 万能接口,但 tag 导致空格截断前 Host 不固定不方便批量测试 {tag}/get")
199+
@Override
200+
public String getByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
201+
return super.getByTag(tag, params, request, session);
202+
}
203+
204+
/**计数
205+
* @param request 只用String,避免encode后未decode
206+
* @param session
207+
* @return
208+
* @see {@link RequestMethod#HEAD}
209+
*/
210+
@PostMapping("head/{tag}")
211+
@Override
212+
public String headByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
213+
return super.headByTag(tag, params, request, session);
214+
}
215+
216+
/**限制性GET,request和response都非明文,浏览器看不到,用于对安全性要求高的GET请求
217+
* @param request 只用String,避免encode后未decode
218+
* @param session
219+
* @return
220+
* @see {@link RequestMethod#GETS}
221+
*/
222+
@PostMapping("gets/{tag}")
223+
@Override
224+
public String getsByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
225+
return super.getsByTag(tag, params, request, session);
226+
}
227+
228+
/**限制性HEAD,request和response都非明文,浏览器看不到,用于对安全性要求高的HEAD请求
229+
* @param request 只用String,避免encode后未decode
230+
* @param session
231+
* @return
232+
* @see {@link RequestMethod#HEADS}
233+
*/
234+
@PostMapping("heads/{tag}")
235+
@Override
236+
public String headsByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
237+
return super.headsByTag(tag, params, request, session);
238+
}
239+
240+
/**新增
241+
* @param request 只用String,避免encode后未decode
242+
* @param session
243+
* @return
244+
* @see {@link RequestMethod#POST}
245+
*/
246+
@PostMapping("post/{tag}")
247+
@Override
248+
public String postByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
249+
return super.postByTag(tag, params, request, session);
250+
}
251+
252+
/**修改
253+
* @param request 只用String,避免encode后未decode
254+
* @param session
255+
* @return
256+
* @see {@link RequestMethod#PUT}
257+
*/
258+
@PostMapping("put/{tag}")
259+
@Override
260+
public String putByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
261+
return super.putByTag(tag, params, request, session);
262+
}
263+
264+
/**删除
265+
* @param request 只用String,避免encode后未decode
266+
* @param session
267+
* @return
268+
* @see {@link RequestMethod#DELETE}
269+
*/
270+
@PostMapping("delete/{tag}")
271+
@Override
272+
public String deleteByTag(@PathVariable String tag, @RequestParam Map<String, String> params, @RequestBody String request, HttpSession session) {
273+
return super.deleteByTag(tag, params, request, session);
274+
}
275+
276+
//以上接口对应的简版接口,格式为 {method}/{tag}?format=true&@explain=true.. >>>>>>>>>>>>>>>>>>>>>>>>>
277+
190278

191279

192280

@@ -197,7 +285,7 @@ public String delete(@RequestBody String request, HttpSession session) {
197285
* @return
198286
* @see {@link RequestMethod#GET}
199287
*/
200-
@RequestMapping("get/{request}")
288+
@GetMapping("get/{request}")
201289
public String openGet(@PathVariable String request, HttpSession session) {
202290
try {
203291
request = URLDecoder.decode(request, StringUtil.UTF_8);
@@ -214,7 +302,7 @@ public String openGet(@PathVariable String request, HttpSession session) {
214302
* @return
215303
* @see {@link RequestMethod#HEAD}
216304
*/
217-
@RequestMapping("head/{request}")
305+
@GetMapping("head/{request}")
218306
public String openHead(@PathVariable String request, HttpSession session) {
219307
try {
220308
request = URLDecoder.decode(request, StringUtil.UTF_8);

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/DemoFunctionParser.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
import apijson.JSONResponse;
2727
import apijson.NotNull;
2828
import apijson.RequestMethod;
29-
import apijson.RequestRole;
3029
import apijson.StringUtil;
3130
import apijson.framework.APIJSONFunctionParser;
31+
import apijson.orm.AbstractVerifier;
3232
import apijson.orm.JSONRequest;
3333

3434

@@ -212,8 +212,8 @@ public JSONArray getIdList(@NotNull JSONObject current) {
212212
*/
213213
public Object verifyAccess(@NotNull JSONObject current) throws Exception {
214214
long userId = current.getLongValue(JSONRequest.KEY_USER_ID);
215-
RequestRole role = RequestRole.get(current.getString(JSONRequest.KEY_ROLE));
216-
if (role == RequestRole.OWNER && userId != DemoVerifier.getVisitorId(getSession())) {
215+
String role = current.getString(JSONRequest.KEY_ROLE);
216+
if (AbstractVerifier.OWNER.equals(role) && userId != DemoVerifier.getVisitorId(getSession())) {
217217
throw new IllegalAccessException("登录用户与角色OWNER不匹配!");
218218
}
219219
return null;

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/DemoSQLConfig.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,20 +70,20 @@ public AbstractSQLConfig getSQLConfig(RequestMethod method, String database, Str
7070

7171
//取消注释来实现自定义各个表的主键名
7272
// @Override
73-
// public String getIdKey(String database, String schema, String table) {
73+
// public String getIdKey(String database, String schema, String datasource, String table) {
7474
// return StringUtil.firstCase(table + "Id"); // userId, comemntId ...
7575
// // return StringUtil.toLowerCase(t) + "_id"; // user_id, comemnt_id ...
7676
// // return StringUtil.toUpperCase(t) + "_ID"; // USER_ID, COMMENT_ID ...
7777
// }
7878

7979
@Override
80-
public String getUserIdKey(String database, String schema, String table) {
80+
public String getUserIdKey(String database, String schema,String datasource, String table) {
8181
return USER_.equals(table) || PRIVACY_.equals(table) ? ID : USER_ID; // id / userId
8282
}
8383

8484
//取消注释来实现数据库自增 id
8585
// @Override
86-
// public Object newId(RequestMethod method, String database, String schema, String table) {
86+
// public Object newId(RequestMethod method, String database, String schema, String datasource, String table) {
8787
// return null; // return null 则不生成 id,一般用于数据库自增 id
8888
// }
8989

@@ -165,7 +165,7 @@ public String getDBUri() {
165165
return "jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; //TODO 改成你自己的,TiDB 可以当成 MySQL 使用,默认端口为 4000
166166
}
167167
if (isPostgreSQL()) {
168-
return "jdbc:postgresql://localhost:5432/postgres"; //TODO 改成你自己的
168+
return "jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified"; //TODO 改成你自己的
169169
}
170170
if (isSQLServer()) {
171171
return "jdbc:jtds:sqlserver://localhost:1433/pubs;instance=SQLEXPRESS"; //TODO 改成你自己的

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/model/Privacy.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@
1414

1515
package apijson.demo.model;
1616

17-
import static apijson.RequestRole.ADMIN;
18-
import static apijson.RequestRole.OWNER;
19-
import static apijson.RequestRole.UNKNOWN;
17+
import static apijson.orm.AbstractVerifier.ADMIN;
18+
import static apijson.orm.AbstractVerifier.OWNER;
19+
import static apijson.orm.AbstractVerifier.UNKNOWN;
2020

2121
import com.alibaba.fastjson.annotation.JSONField;
2222

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/model/User.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414

1515
package apijson.demo.model;
1616

17-
import static apijson.RequestRole.ADMIN;
18-
import static apijson.RequestRole.UNKNOWN;
17+
import static apijson.orm.AbstractVerifier.ADMIN;
18+
import static apijson.orm.AbstractVerifier.UNKNOWN;
1919

2020
import java.util.List;
2121

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/java/apijson/demo/model/Verify.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@
1414

1515
package apijson.demo.model;
1616

17-
import static apijson.RequestRole.ADMIN;
18-
import static apijson.RequestRole.CIRCLE;
19-
import static apijson.RequestRole.CONTACT;
20-
import static apijson.RequestRole.LOGIN;
21-
import static apijson.RequestRole.OWNER;
22-
import static apijson.RequestRole.UNKNOWN;
17+
import static apijson.orm.AbstractVerifier.ADMIN;
18+
import static apijson.orm.AbstractVerifier.CIRCLE;
19+
import static apijson.orm.AbstractVerifier.CONTACT;
20+
import static apijson.orm.AbstractVerifier.LOGIN;
21+
import static apijson.orm.AbstractVerifier.OWNER;
22+
import static apijson.orm.AbstractVerifier.UNKNOWN;
2323

2424
import apijson.MethodAccess;
2525
import apijson.framework.BaseModel;

APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/application.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ spring:
88
hikari:
99
type: com.zaxxer.hikari.HikariDataSource
1010
driver-class-name: org.postgresql.Driver
11-
jdbc-url: jdbc:postgresql://localhost:5432/postgres
11+
jdbc-url: jdbc:postgresql://localhost:5432/postgres?stringtype=unspecified
1212
username: postgres
1313
password:
1414
minimum-idle: 5
Binary file not shown.

APIJSON-Java-Server/APIJSONBoot/pom.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55

66
<groupId>apijson.boot</groupId>
77
<artifactId>apijson-boot</artifactId>
8-
<version>4.7.2</version>
9-
<packaging>jar</packaging>
8+
<version>4.8.0</version>
9+
<!-- <packaging>jar</packaging> -->
1010

1111
<name>APIJSONBoot</name>
1212
<description>Demo project for APIJSON Server based on SpringBoot</description>
@@ -53,7 +53,7 @@
5353

5454

5555
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 <<<<<<<<<< -->
56-
<dependency>
56+
<!-- <dependency>
5757
<groupId>com.github.Tencent</groupId>
5858
<artifactId>APIJSON</artifactId>
5959
<version>4.7.2</version>
@@ -67,7 +67,7 @@
6767
<groupId>com.github.APIJSON</groupId>
6868
<artifactId>apijson-column</artifactId>
6969
<version>1.1.2</version>
70-
</dependency>
70+
</dependency> -->
7171
<!-- 可使用 libs 目录的 apijson-orm.jar, apijson-framework.jar, apijson-column.jar 来替代,两种方式二选一 >>>>>>>>>> -->
7272

7373
<!-- 需要用的数据库 JDBC 驱动 -->

0 commit comments

Comments
 (0)