在前面的文章中我们已经了解到如何快速构建一个基于 Spring Boot 架构的 Web 服务:
【干货】如何快速构建SpringBoot Web服务
今天这篇文章我们将继续深入学习接口开发与接口管理的内容。
我们先从简单的 GET 请求的实现开始:
GET接口开发
返回 Cookies 的 GET 请求实现
我们这里以登录成功后,新添加一个 Cookie ,并返回对应的值示例。
示例代码:
@RequestMapping(value = “/getCookies”,method = RequestMethod.GET)
@ApiOperation(value = “通过这个方法可以获取到Cookies”,httpMethod = “GET”)
public String getCookies(HttpServletResponse response){
Cookie cookie = new Cookie(“login”,”true”);
response.addCookie(cookie);
return “恭喜你获得cookies信息成功”;
}
Cookies 验证接口实现
在客户端通过上述接口获取并保存对应的 Cookie 值后,在后续接口中,需要携带 Cookie 信息;服务端获取到对应值并进行验证。
示例代码:
@RequestMapping(value = “/get/with/cookies”,method = RequestMethod.GET)
@ApiOperation(value = “要求客户端携带cookies访问”,httpMethod = “GET”)
public String getWithCookies(HttpServletRequest request){
Cookie[] cookies = request.getCookies();
if(Objects.isNull(cookies)){
return “你必须携带cookies信息来”;
}
for(Cookie cookie : cookies){
if(cookie.getName().equals(“login”) &&
cookie.getValue().equals(“true”)){
return “资源访问成功!”;
}
else {
return “cookies信息错误”;
}
}
return "cookies信息为空,必须携带cookies";
}
携带参数的 GET 请求接口方式可以多样化,这里提供两个作为参考。
携带参数的 GET 请求实现-方式一
示例代码:
@RequestMapping(value = “/get/with/param”,method = RequestMethod.GET)
@ApiOperation(value = “需求携带参数才能访问的get请求方法一”,httpMethod = “GET”)
public Map getList(@RequestParam Integer start,
@RequestParam Integer end){
Map myList = new HashMap<>();
msg.put(“status”,”0″);
msg.put(“msg”,”请求成功”);
return myList;
}
携带参数的 GET 请求实现-方式二:
示例代码:
@RequestMapping(value = “/get/with/param/{start}/{end}”)
@ApiOperation(value = “需求携带参数才能访问的get请求的第二种实现”,httpMethod = “GET”)
public Map myGetList(@PathVariable Integer start,
@PathVariable Integer end){
Map msg = new HashMap<>();
msg.put(“status”,”0″);
msg.put(“msg”,”请求成功”);
return myList;
}
POST接口开发
了解完 GET 请求的开发过程后,我们继续学习 POST 方式的接口开发方法。
这里演示登录接口,以及获取用户信息接口两个接口。
示例代码:
@RestController
@Api(value = “/”,description = “TestOps全部的post方法”)
public class myPost {
//这个变量是用来装我们cookies信息的
private static Cookie cookie;
//用户登陆成功获取到cookies,然后再访问其他接口获取到列表
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ApiOperation(value = "登陆接口",httpMethod = "POST")
public String login(HttpServletResponse response,
@RequestParam(value = "userName",required = true) String userName,
@RequestParam(value = "password",required = true) String passWord){
if(userName.equals("TestOps") && passWord.equals("123456")){
cookie = new Cookie("login","true");
response.addCookie(cookie);
return "恭喜你登陆成功了!";
}
return "用户名或者是密码错误!";
}
@RequestMapping(value = "/getUserList", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ApiOperation(value = "获取用户信息接口",httpMethod = "POST")
public Map<String, String> getUserList(@RequestBody userLogin user) {
Map<String,String > msg = new HashMap<>();
if(user.getPassWord().equals("123456")&&user.getUserName().equals("testOps")){
msg.put("status","0");
msg.put("msg","请求成功");
}
else {
msg.put("status","1");
msg.put("msg","用户名或者密码错误");}
return msg;
}
}
}
其中userLogin代码为:
public class userLogin {
private String userName;
private String passWord;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
",passWord='" + passWord + '\'' +
'}';
}
}
在了解 GET 和 POST 接口的实现之后,我们一起来看看如何整合 Swagger 实现在线的接口文档的功能。
Swagger
首先需要在 pom.xml 中添加相关依赖:
io.springfox springfox-swagger2 2.6.1
io.springfox springfox-swagger-ui 2.6.1
并添加对应的配置文件:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.pathMapping(“/”)
.select() // 选择那些路径和api会生成document
.apis(RequestHandlerSelectors.any())// 对所有api进行监控
.paths(Predicates.not(PathSelectors.regex(“/error.“)))//错误路径不监控 .paths(PathSelectors.regex(“/.“))// 对根下所有路径进行监控
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("TestOps接口文档")
.contact(new Contact("TestOps", "http://www.testops.cn/", "11054212787@qq.com"))
.description("TestOps测试运维从零开始项目接口文档")
.termsOfServiceUrl("TestOps测试运维从零开始")
.license("The Apache License, Version 2.0")
.licenseUrl("http://www.apache.org/licenses/LICENSE-2.0.html")
.version("v1.0")
.build();
}
}
配置完成之后,即可使用相关注解修饰指定的接口。
示例:
// @Api:用在类上,说明该类的作用
@Api(value = “v1”,description = “用户信息接口”)
// @ApiOperation:用在方法上,说明方法的作用
@ApiOperation(value = “可以获取到用户数”,httpMethod = “GET”)
@ApiOperation(value = “通过用户名查询用户信息”, notes = “通过用户名查询用户信息”)
// @ApiResponses:于表示一组响应
@ApiResponses(value = {
@ApiResponse(code = 200, message = “保存成功”),
@ApiResponse(code = 401, message = “没有权限”),
@ApiResponse(code = 403, message = “被禁止访问”),
@ApiResponse(code = 404, message = “没有找到”)
}
大家也可以使用:
@ApiImplicitParam:用在方法上包含一组参数说明)
@ApiModel:描述一个Model的信息,一般用在post创建的时候,使用@RequestBody这样的场景,请求参数无法使用@ApiImplicitParam注解进行描述的时候
@ApiModelProperty:描述一个model的属性
等相关注解
接口文档查看
访问:http://localhost:8085/testops/swagger-ui.html#/
就可以看到对应的在线文档:
图片
在整合 Swagger 文档的时候,如果觉得 Swagger 的原生界面不是很友好,可以考虑使用 knife4j 。
添加相关依赖即可:
com.github.xiaoymin knife4j-spring-boot-starter 2.0.6
com.github.xiaoymin knife4j-springdoc-ui 2.0.6
图片
_
时间
课题
周一
20:00
腾讯课堂
《敏捷测试从零开始》
周二
20:00
腾讯课堂
《测试开发从零开始》python篇
周三
20:00
腾讯课堂
《运维从零开始》
周四
20:00
腾讯课堂
《测试开发从零开始》
java篇
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/186832.html