##
2.Server-side deployment
### JDBC Demo:
[APIJSONDemo](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONDemo) is a simple demo for testing with APIJSON + SpringBoot + MySQL + PostgreSQL, configure database in DemoSQLConfig;
[APIJSONBoot](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot) is a complex demo for production with APIJSON + SpringBoot + MySQL + PostgreSQL + SQLServer + TDengine, configure database in DemoSQLConfig;
[APIJSONFinal](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONFinal) is a complex demo for production with APIJSON + SpringBoot + MySQL + PostgreSQL, configure database in DemoSQLConfig.
### Connection Pool Demo:
[APIJSONDemo-Druid](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONDemo-Druid) is a simple demo for testing with APIJSON + SpringBoot + Druid + MySQL + PostgreSQL, configure database in application.yml;
[APIJSONDemo-HikariCP](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONDemo-HikariCP) is a simple demo for testing with APIJSON + SpringBoot + HikariCP + MySQL + PostgreSQL, configure database in application.yml;
[APIJSONBoot-MultiDataSource](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot-MultiDataSource) is a complex demo for production with APIJSON + SpringBoot + Druid + HikariCP + PostgreSQL + SQLServer + TDengine + Dameng, configure database in application.yml,
and the [APIAuto](https://github.com/TommyLemon/APIAuto) source code is in [src/main/resources/static](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot-MultiDataSource/src/main/resources/static), you can test APIs after open http://localhost:8080 with a browser.
### Sharding Demo:
[APIJSONDemo-ShardingSphere](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONDemo-ShardingSphere) is a simple demo for testing with APIJSON + SpringBoot + ShardingSphere + MySQL + PostgreSQL, configure database in application.yml, application-sharding-databases.properties, etc.
### BigData & OLAP Demo
[APIJSONBoot-BigData](https://github.com/APIJSON/APIJSON-Demo/tree/master/APIJSON-Java-Server/APIJSONBoot-BigData) is a complex demo for production with APIJSON + SpringBoot + Presto + Trino + Elasticsearch.
**You can use either Eclipse for JavaEE or IntelllJ IDEA Ultimate to make installation.
For both, first [download the project](https://github.com/APIJSON/APIJSON-Demo/archive/master.zip) and save it to a path.**
### 2.1 Requirements
JDK(Java Development Kit): 1.8+
[Maven](https://maven.apache.org/download.cgi): 3.0+
Database: MySQL/PostgreSQL/Oracle/DB2/SQLServer/TiDB/ClickHouse/TDengine ..
### 2.2 Import MySQL table files
This Server project needs [MySQL Server](https://dev.mysql.com/downloads/mysql/) and [MySQLWorkbench](https://www.mysql.com/products/workbench/). Please make sure that both of them are installed.
My config is Windows 7 + MySQL Community Server 5.7.16 + MySQLWorkbench 6.3.7 and OSX EI Capitan + MySQL Community Server 5.7.16 + MySQLWorkbench 6.3.8. Systems and softwares are all 64 bit.
Start *MySQLWorkbench > Enter a connection > Click Server menu > Data Import > Select the path of your .sql file > Start Import > Refresh SCHEMAS*. Now you should see tables are added successfully.
### 2.3 Installing with Eclipse
#### 2.3.1 prerequisites
[Eclipse Java EE IDE](https://www.eclipse.org/downloads/) for Web Developers 4.5.1+
#### 2.3.2 Opening the project with Eclipse
Open Eclipse> *File > Import > Maven > Existing Maven Projects > Next > Browse > Select the path of the project you saved / APIJSON-Java-Server / APIJSONBoot > check pom.xml...apijson-demo > Finish*
#### 2.3.3 Preparing the library used in demo
In the menu at the right, click libs, right click apijson-orm.jar, click add as library. Apply the same to the rest *.jar* files in libs.
#### 2.3.4 Configuration
Open apijson.demo.server.DemoSQLConfig. In line 40-61, change return values of `getDBUri`,`getDBAccount`,`getDBPassword`,`getSchema` to your own database.
```java
static {
DEFAULT_DATABASE = DATABASE_MYSQL; // TODO
DEFAULT_SCHEMA = "sys"; // TODO defaults: MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle:
}
@Override
public String getDBVersion() {
return "5.7.22"; // "8.0.11"; // TODO
}
@JSONField(serialize = false)
@Override
public String getDBUri() {
// add userSSL=false for MySQL 8.0+ return "jdbc:mysql://localhost:3306?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8";
// for MySQL not greater than 5.7
return "jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; // TODO TiDB can be used as MySQL, its defaut port is 4000
}
@JSONField(serialize = false)
@Override
public String getDBAccount() {
return "root"; // TODO
}
@JSONField(serialize = false)
@Override
public String getDBPassword() {
return "apijson"; // TODO TiDB can be used as MySQL, its defaut password is an empty string ""
}
```
**Note**: Instead of this step, you can also [import your database](#2.2).
#### 2.3.5 Running the application
In Eclipse, in the menu on the top, click *Run>Run As>Java Application>choose APIJSONApplication>OK*
### 2.4 Installing with IntellIJ IDEA Ultimate
#### 2.4.1 Opening the project
*Open > Select the path of the project/APIJSON-Java-Server/APIJSONBoot > OK*
#### 2.4.2 Preparing the library used in demo
In libs, right-click *apijson-orm.jar >Add as Library>OK*. Apply this to all *.jar* files in libs.
#### 2.4.3 Configuration
Open apijson.demo.server.DemoSQLConfig. In line 40-61, change return values of `getDBUri`,`getDBAccount`,`getDBPassword`,`getSchema` to your own database.
```java
static {
DEFAULT_DATABASE = DATABASE_MYSQL; // TODO
DEFAULT_SCHEMA = "sys"; // TODO defaults: MySQL: sys, PostgreSQL: public, SQL Server: dbo, Oracle:
}
@Override
public String getDBVersion() {
return "5.7.22"; // "8.0.11"; // TODO
}
@JSONField(serialize = false)
@Override
public String getDBUri() {
// add userSSL=false for MySQL 8.0+ return "jdbc:mysql://localhost:3306?userSSL=false&serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8";
// for MySQL not greater than 5.7
return "jdbc:mysql://localhost:3306?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8"; // TODO TiDB can be used as MySQL, its defaut port is 4000
}
@JSONField(serialize = false)
@Override
public String getDBAccount() {
return "root"; // TODO
}
@JSONField(serialize = false)
@Override
public String getDBPassword() {
return "apijson"; // TODO TiDB can be used as MySQL, its defaut password is an empty string ""
}
```
#### 2.4.4 Running the application
In the menu on the top: *Run > Run > Edit Configurations > + > Application > Configuration*
In *Main class* , choose *APIJSONApplication*;
In *Use classpath of module* , choose *apijson-demo*.
Click *Run* in the bottom.
**Note**: After running, you should see APIJSON test logs and in the last, it would show ‘APIJSON已启动’. If it shows ‘address already in use’, that means port 8080 has been used . You need tochange the port. See [how to change ports for a Spring Boot Application.](https://stackoverflow.com/questions/21083170/how-to-configure-port-for-a-spring-boot-application)
### 2.5.Test connection
Open [http://localhost:8080/get/{}](http://localhost:8080/get/{}) with a browser
If it shows:
```json
{
"code": 200,
"msg": "success"
}
```
Then it's a success.
If it shows '404 Not Found', please close the firewall of your machine.
Google other quetions if they appear.
### 2.6.Test APIs
Use [APIAuto](http://apijson.cn/api), Postman or another HTTP API test tool, the request form is HTTP POST JSON, see more on the Document
https://github.com/Tencent/APIJSON/blob/master/Document-English.md