# 开发规范

### maven规范

* 除了根工程的pom.xml之外，子工程的pom.xml引入的jar都不予许设置version属性
* 基本的包版本控制主要由以下3个来控制

```
spring-boot-dependencies
platform-bom
spring-cloud-dependencies
```

* 新增加jar包依赖的步骤如下

  1. 先查看父工程/根工程是否已引入该jar
  2. 查看根工程的dependencyManagement是否已经有该jar的管理
  3. 如果没有则查看以下地址的Appendix A. Dependency versions 是否有该jar的管理

  ```
  https://docs.spring.io/platform/docs/Cairo-SR3/reference/htmlsingle/
  ```

  4. 都没有的话则自己添加该jar的管理，先去根工程的properties里添加版本号，再去dependencyManagement里添加该jar



### 接口规范

* 按照restful接口设计规范
  GET （SELECT）：从服务器检索特定资源，或资源列表。

  POST （CREATE）：在服务器上创建一个新的资源。

  PUT （UPDATE）：更新服务器上的资源，提供整个资源。

  PATCH （UPDATE）：更新服务器上的资源，仅提供更改的属性。

  DELETE （DELETE）：从服务器删除资源。

* 接口尽量使用名词，禁止使用动词，下面是一些例子

```java
GET         /zoos：列出所有动物园
POST        /zoos：新建一个动物园
GET         /zoos/{id}：获取某个指定动物园的信息
PUT         /zoos/{id}：更新某个指定动物园的信息（提供该动物园的全部信息）
PATCH       /zoos/{id}：更新某个指定动物园的信息（提供该动物园的部分信息）
DELETE      /zoos/{id}：删除某个动物园
GET         /zoos/{id}/animals：列出某个指定动物园的所有动物
DELETE      /zoos/{zId}/animals/{aId}：删除某个指定动物园的指定动物
```

* 反例：

```
/getAllCars
/createNewCar
/deleteAllRedCars
```



### 后端返回JSON

* 后端统一返回 com.central.common.model.Result 对象
  * datas：具体响应的其他信息
  * resp_code：响应码，目前0是成功、1是失败
  * resp_msg：响应消息



### 埋点日志规范

* 如果使用日志埋点的方式，建议按以下格式写日志

```
格式为：{时间}|{来源}|{对象id}|{类型}|{对象属性(以&分割)}

例子1：
2016-07-27 23:37:23|business-center|1|user-login|ip=xxx.xxx.xx&userName=张三&userType=后台管理员

例子2：
2016-07-27 23:37:23|file-center|c0a895e114526786450161001d1ed9|file-upload|fileName=xxx&filePath=xxx
```

