<h1 align="center">
Api Example
</h1>
<p align="center">
<strong>以API接口开发为例,探索开发的最佳实践</strong>
</p>
## 分支列表
| 分支名称 | 说明 |
| --- | --- |
| api-result-sample | api-result结合Spring Boot使用实例 |
## 默认启用端口
9191
## 功能
- [x] 包结构规划最佳实践
- [x] API接口返回结果封装最佳解决方案
- [x] 使用Swagger实现漂亮、简洁、大方API接口文档
- [x] Swagger添加请求头
- [x] RESTful API规范接口实例(2020.4.12)
- [ ] Swagger添加接口认证
- [ ] MySQL数据库操作实例
- [ ] MongoDB操作实例
- [ ] Redis操作实例
- [ ] Kafka操作实例
- [ ] RabbitMQ操作实例
- [ ] Elasticsearch操作实例
## 项目目录结构
```
APIExample
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── fengwenyi
│ │ │ └── api_example
│ │ │ ├── bean
│ │ │ │ └── PageResultDataBean
│ │ │ ├── config
│ │ │ │ └── Swagger2Config
│ │ │ ├── controller
│ │ │ │ ├── ApiTestResultController
│ │ │ │ └── ApiUserController
│ │ │ ├── data
│ │ │ │ └── UserData
│ │ │ ├── entity
│ │ │ │ └── UserEntity
│ │ │ ├── exceptions
│ │ │ │ └── DataParseException
│ │ │ ├── handler
│ │ │ │ └── GlobalExceptionHandler
│ │ │ ├── util
│ │ │ │ ├── ApiResultUtils
│ │ │ │ ├── PageResultUtils
│ │ │ │ └── ResultUtils
│ │ │ ├── vo
│ │ │ │ └── param
│ │ │ │ ├── UserFilterParamVO
│ │ │ │ └── UserParamVO
│ │ │ └── ApiExampleApplication
│ │ └── resource
│ │ ├── application.yml
│ │ └── banner.txt
│ └── test
│ └── java
│ └── com
│ └── fengwenyi
│ └── api_example
│ └── ApiExampleApplicationTests
└── pom.xml
```
## 包
`controller`
`business`
`service`
## 依赖
`默认错误页面`
```xml
<dependency>
<groupId>com.github.iutil</groupId>
<artifactId>app-boot-starter</artifactId>
<version>${app-boot-starter.version}</version>
</dependency>
```
`API接口结果处理解决方案`
```xml
<dependency>
<groupId>com.github.iutil</groupId>
<artifactId>api-result</artifactId>
<version>${api-result.version}</version>
</dependency>
```
`常用工具类`
```xml
<dependency>
<groupId>com.github.iutil</groupId>
<artifactId>JavaLib</artifactId>
<version>${JavaLib.version}</version>
</dependency>
```
`接口文档:Swagger`
```xml
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
```
## 测试接口示例
控制台打印
```
[2019-06-05 10:17:02.516] api-test -> get
[2019-06-05 10:17:12.900] api-test -> add
[2019-06-05 10:17:24.037] api-test -> update
[2019-06-05 10:17:36.409] api-test -> delete
```
## 包结构
```
controller -> business -> service -> dbBusiness -> dbService
```
## 关于DB
```
dbService 只能由 dbBusiness调用
在 dbService 里处理所有与数据库相关的异常
查询由 find 开头
携带All:查询所有的数据
携带Use:查询没有被逻辑删除,且已经发布的数据
携带Normal:查询没有被逻辑删除的数据
```
## RESTful API
### HTTP动词
对于资源的具体操作类型,由HTTP动词表示。
常用的HTTP动词有下面五个(括号里是对应的SQL命令)。
```
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
```
还有两个不常用的HTTP动词。
```
HEAD:获取资源的元数据。
OPTIONS:获取信息,关于资源的哪些属性是客户端可以改变的。
```
下面是一些例子。
```
GET /zoos:列出所有动物园
POST /zoos:新建一个动物园
GET /zoos/ID:获取某个指定动物园的信息
PUT /zoos/ID:更新某个指定动物园的信息(提供该动物园的全部信息)
PATCH /zoos/ID:更新某个指定动物园的信息(提供该动物园的部分信息)
DELETE /zoos/ID:删除某个动物园
GET /zoos/ID/animals:列出某个指定动物园的所有动物
DELETE /zoos/ID/animals/ID:删除某个指定动物园的指定动物
```
### 过滤信息(Filtering)
如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。
下面是一些常见的参数。
```
?limit=10:指定返回记录的数量
?offset=10:指定返回记录的开始位置。
?page=2&per_page=100:指定第几页,以及每页的记录数。
?sortby=name&order=asc:指定返回结果按照哪个属性排序,以及排序顺序。
?animal_type_id=1:指定筛选条件
```
参数的设计允许存在冗余,即允许API路径和URL参数偶尔有重复。比如,`GET /zoo/ID/animals` 与 `GET /animals?zoo_id=ID` 的含义是相同的。
### 错误处理
如果状态码是4xx,就应该向用户返回出错信息。一般来说,返回的信息中将error作为键名,出错信息作为键值即可。
```
{
error: "Invalid API key"
}
```
### 返回结果
针对不同操作,服务器向用户返回的结果应该符合以下规范。
```
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
```
2020.5.11 规划
```
api-example
api-web
api-webfluex
api-swagger
```
## 版本
1.0.0 2021.01.21-
没有合适的资源?快使用搜索试试~ 我知道了~
SpringMVC精品资源--以API接口开发为例,探索开发的最佳实践.zip
共25个文件
java:17个
txt:1个
sql:1个
5星 · 超过95%的资源 需积分: 5 1 下载量 187 浏览量
2024-02-18
12:52:00
上传
评论
收藏 19KB ZIP 举报
温馨提示
SpringMVC精品资源--以API接口开发为例,探索开发的最佳实践
资源推荐
资源详情
资源评论
收起资源包目录
SpringMVC精品资源--以API接口开发为例,探索开发的最佳实践.zip (25个子文件)
ahao5
pom.xml 3KB
src
test
java
com
fengwenyi
api
example
ApiExampleApplicationTests.java 244B
main
resources
templates
byte-array.html 3KB
banner.txt 281B
application.yml 39B
java
com
fengwenyi
api
example
exceptions
DataSaveException.java 276B
DataParseException.java 284B
data
UserData.java 1KB
handler
GlobalExceptionHandler.java 3KB
ApiExampleApplication.java 338B
controller
UserController.java 5KB
IcbcController.java 1KB
ByteArrayController.java 1KB
DemoController.java 998B
entity
UserEntity.java 332B
util
Utils.java 3KB
vo
response
UserResponseVo.java 561B
request
UserCriteriaRequestVO.java 268B
IcbcPayNoticeRequestVo.java 2KB
UserRequestVo.java 871B
config
Swagger2Configuration.java 4KB
LICENSE 1KB
.gitignore 311B
README.md 7KB
db
db.sql 2KB
共 25 条
- 1
资源评论
- 季风泯灭的季节2024-02-23终于搞懂了SpringMVC的开发原来是这么回事,感谢博主!! #内容详尽
码农阿豪
- 粉丝: 1w+
- 资源: 1754
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- c#优质学习资源和工具与案列应用场景.txt
- 《医疗与在线教育PPT模板合集》-点亮您的演讲与教学!
- VisualBasic优质学习资源和工具与案列应用场景.txt
- 传热 - 化工原理实验Mathmatica代码
- 传热 - 化工原理实验Mathmatica代码
- Delphi优质学习资源和工具.txt
- Rust优质资源和工具.txt
- Kotlin优质资源和工具.txt
- OpenCASCADE入门(2)-openCasCade7.6.0版本的exe方式安装,vs2017环境配置,编译和使用draw
- ACM(Association for Computing Machinery,计算机协会)相关的资源.txt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功