Skip to content

Commit 49863bd

Browse files
authored
Update swagger-usage-guideline.md
1 parent d3d95a5 commit 49863bd

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

backend/swagger-usage-guideline.md

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
# Swagger-usage-guideline
2+
3+
- swagger 文档应成为前端调用后端接口的手册,在此对 swagger 使用进行规范,方便前后端交互。
4+
5+
## API 名称和说明
6+
7+
- 在 Controller 中对外暴露的方法上加上如下注解
8+
9+
```java
10+
@ApiOperation(value = "API名称", notes = "API说明")
11+
```
12+
13+
- 若该 API 有需要指出的异常情况,则在 notes 中加以说明,如下:
14+
15+
```java
16+
@ApiOperation(
17+
value = "员工登陆",
18+
notes = "根据用户名和密码进行登陆认证</br>"
19+
+ "code = 1: 密码错误</br>"
20+
+ "code = 2: 用户名不存在"
21+
)
22+
```
23+
24+
- 有一种对返回值的写法如下,其会将 code 视为 Http Status Code,并不适合我们的情况,故不采用
25+
26+
```java
27+
@ApiResponses(value = {
28+
@ApiResponse(code = 1, message = "密码错误"),
29+
@ApiResponse(code = 2, message = "用户名不存在")
30+
})
31+
```
32+
33+
34+
35+
## 请求参数说明
36+
37+
- 参数若为类对象:
38+
39+
- 类名上需加如下注释,用于说明此对象参数的名称:
40+
41+
```java
42+
@ApiModel(value = "登陆信息")
43+
```
44+
45+
- 类中字段需在 @ApiModelProperty 注解中加如下说明:
46+
- value:表示字段名
47+
- example:表示该字段的示例值,在测试时很有帮助
48+
- required: 若为必携带的参数,则为true
49+
50+
```java
51+
@ApiModelProperty(value = "用户名,可以为手机/邮箱", example = "[email protected]", required = true)
52+
```
53+
54+
- 若为普通参数:
55+
- 在方法的请求参数前,与 @RequestParam并列
56+
57+
```java
58+
@ApiParam(value = “用户ID”, example = "1100020")
59+
```
60+
61+
## 返回值说明
62+
63+
- 与请求参数如出一辙
64+
- 暂未看到返回非对象的注解方法,不过返回非对象的情况很少,基本可以忽略
65+
66+
## Sagger 配置类示例
67+
68+
```java
69+
@Configuration
70+
@EnableSwagger2
71+
public class SwaggerConfig {
72+
73+
/**
74+
* swagger配置
75+
* @return swagger相关配置
76+
*/
77+
@Bean
78+
public Docket createRestApi() {
79+
return new Docket(DocumentationType.SWAGGER_2)
80+
.apiInfo(apiInfo())
81+
.select()
82+
.apis(RequestHandlerSelectors.basePackage("com.tehang.tmc.services.application.rest.front.corp"))
83+
.paths(PathSelectors.any())
84+
.build();
85+
}
86+
87+
private ApiInfo apiInfo() {
88+
return new ApiInfoBuilder()
89+
.title("TMC Services")
90+
.description("出行从未如此简单")
91+
.contact(new Contact("TMC group", "https://www.teyixing.com", "[email protected]"))
92+
.version("1.0")
93+
.build();
94+
}
95+
96+
}
97+
```

0 commit comments

Comments
 (0)