基于 Spring Boot 的接口开发与管理

在前面的文章中我们已经了解到如何快速构建一个基于 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

(0)
联系我们
联系我们
分享本页
返回顶部