项目实战接口开发SpringBoot
1.引入依赖
1 <parent> 2 <groupId>org.springframework.boot</groupId> 3 <artifactId>spring-boot-starter-parent</artifactId> 4 <version>1.5.3.RELEASE</version> 5 </parent> 6 <dependency> 7 <groupId>org.springframework.boot</groupId> 8 <artifactId>spring-boot-starter-web</artifactId> 9 </dependency>
2.springboot启动类
1 import org.springframework.boot.SpringApplication; 2 import org.springframework.boot.autoconfigure.SpringBootApplication; 3 import org.springframework.context.annotation.ComponentScan; 4 //启动类 5 @SpringBootApplication 6 @ComponentScan("com.test") 7 public class Application { 8 public static void main(String[] args) { 9 SpringApplication.run(Application.class, args); 10 } 11 }
3.返回cookies信息的get接口开发
1 //@RestController加在类上面的注解,使得类里面的每个方法都将json/xml返回数据加返回到前台页面中 2 @RestController 3 public class MyGetMethod { 4 //@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写 5 @GetMapping("/getCookies") 6 public String getCookies(HttpServletResponse response) { 7 Cookie cookie = new Cookie("login","true"); 8 response.addCookie(cookie); 9 return "恭喜你获取cookies成功"; 10 } 11 }
4.要求携带cookies信息访问的get接口开发
1 //要求客户端携带cookies才能访问 2 @GetMapping("/getWithCookies") 3 public String getWithCookies(HttpServletRequest request) { 4 Cookie[] cookies = request.getCookies(); 5 if (cookies == null) { 6 return "必须携带cookie访问"; 7 } 8 for (Cookie c:cookies) { 9 if (c.getName().equals("login")&&c.getValue().equals("true")) { 10 return "恭喜你登录成功"; 11 } 12 } 13 return "必须携带cookie访问"; 14 }
5.携带参数的get请求两种开发方式
1 /** 2 * 开发一个需要携带参数才能访问的get请求。 3 * 第一种实现方式 url: key=value&key=value 4 * 我们来模拟获取商品列表 5 * 解决参数不一致可以用@RequestParam("start")Integer s 6 */ 7 @GetMapping("/getWithParam") 8 public Map<String, Double> getWithParam(Integer start,Integer end){ 9 Map<String , Double> myMap = new HashMap<String, Double>(); 10 myMap.put("苹果", 5.5); 11 myMap.put("香蕉", 2.8); 12 return myMap; 13 } 14 /** 15 * 第二种需要携带参数访问的get请求 16 * url:ip:port/get/with/param/10/20 17 */ 18 @GetMapping("/getWithParam/{start}/{end}") 19 public Map<String, Double> getWithParam2(@PathVariable Integer start,@PathVariable Integer end){ 20 Map<String , Double> myMap = new HashMap<String, Double>(); 21 myMap.put("苹果", 5.5); 22 myMap.put("香蕉", 2.8); 23 return myMap; 24 } 25
6.SpringBoot集成SwaggerUI
6.1引入依赖
1 <properties> 2 <swagger.version>2.6.1</swagger.version> 3 </properties> 4 <dependency> 5 <groupId>io.springfox</groupId> 6 <artifactId>springfox-swagger2</artifactId> 7 <version>${swagger.version}</version> 8 </dependency> 9 <dependency> 10 <groupId>io.springfox</groupId> 11 <artifactId>springfox-swagger-ui</artifactId> 12 <version>${swagger.version}</version> 13 </dependency>
6.2新建SwaggerConfig java配置类
1 package com.test.config; 2 3 import org.springframework.context.annotation.Bean; 4 import org.springframework.context.annotation.Configuration; 5 import springfox.documentation.builders.ApiInfoBuilder; 6 import springfox.documentation.builders.PathSelectors; 7 import springfox.documentation.service.ApiInfo; 8 import springfox.documentation.spi.DocumentationType; 9 import springfox.documentation.spring.web.plugins.Docket; 10 import springfox.documentation.swagger2.annotations.EnableSwagger2; 11 12 @Configuration 13 @EnableSwagger2 14 public class SwaggerConfig { 15 @Bean 16 public Docket api(){ 17 return new Docket(DocumentationType.SWAGGER_2) 18 .apiInfo(apiInfo()) 19 .pathMapping("/") 20 .select() 21 .paths(PathSelectors.regex("/.*")) 22 .build(); 23 } 24 25 private ApiInfo apiInfo() { 26 return new ApiInfoBuilder().title("我的接口文档") 27 .description("这是我的swaggerui生成的接口文档") 28 .version("1.0.0.0") 29 .build(); 30 } 31 }
6.3给方法增加注解
1 package com.test.server; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 6 import javax.servlet.http.Cookie; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.springframework.web.bind.annotation.GetMapping; 11 import org.springframework.web.bind.annotation.PathVariable; 12 import org.springframework.web.bind.annotation.RestController; 13 14 import io.swagger.annotations.Api; 15 import io.swagger.annotations.ApiOperation; 16 17 //@RestController加在类上面的注解,使得类里面的每个方法都将json/xml返回数据加返回到前台页面中 18 @RestController 19 @Api(value = "/",description = "这是我全部的get方法") 20 public class MyGetMethod { 21 //@GetMapping是一个组合注解,是@RequestMapping(method = RequestMethod.GET)的缩写 22 @GetMapping("/getCookies") 23 @ApiOperation(value = "通过这个方法可以获取到Cookies") 24 public String getCookies(HttpServletResponse response) { 25 Cookie cookie = new Cookie("login","true"); 26 response.addCookie(cookie); 27 return "恭喜你获取cookies成功"; 28 } 29 //要求客户端携带cookies才能访问 30 @GetMapping("/getWithCookies") 31 @ApiOperation(value = "要求客户端携带cookies访问") 32 public String getWithCookies(HttpServletRequest request) { 33 Cookie[] cookies = request.getCookies(); 34 if (cookies == null) { 35 return "必须携带cookie访问"; 36 } 37 for (Cookie c:cookies) { 38 if (c.getName().equals("login")&&c.getValue().equals("true")) { 39 return "恭喜你登录成功"; 40 } 41 } 42 return "必须携带cookie访问"; 43 } 44 /** 45 * 开发一个需要携带参数才能访问的get请求。 46 * 第一种实现方式 url: key=value&key=value 47 * 我们来模拟获取商品列表 48 * 解决参数不一致可以用@RequestParam("start")Integer s 49 */ 50 @GetMapping("/getWithParam") 51 @ApiOperation(value = "需求携带参数才能访问的get请求方法一") 52 public Map<String, Double> getWithParam(Integer start,Integer end){ 53 Map<String , Double> myMap = new HashMap<String, Double>(); 54 myMap.put("苹果", 5.5); 55 myMap.put("香蕉", 2.8); 56 return myMap; 57 } 58 /** 59 * 第二种需要携带参数访问的get请求 60 * url:ip:port/get/with/param/10/20 61 */ 62 @GetMapping("/getWithParam/{start}/{end}") 63 @ApiOperation(value = "需求携带参数才能访问的get请求方法二") 64 public Map<String, Double> getWithParam2(@PathVariable Integer start,@PathVariable Integer end){ 65 Map<String , Double> myMap = new HashMap<String, Double>(); 66 myMap.put("苹果", 5.5); 67 myMap.put("香蕉", 2.8); 68 return myMap; 69 } 70 }
7.返回cookies信息的post接口开发
1 @RestController 2 @Api(value = "/",description = "这是我全部的post方法") 3 public class MyPostMethod { 4 //这个变量是用来装我们cookies信息的 5 private static Cookie cookie; 6 @PostMapping("/login") 7 @ApiOperation(value = "登录成功,获取cookies信息") 8 public String login(@RequestParam(value = "username",required = true)String username,@RequestParam(value = "password",required = true)String password,HttpServletResponse response) { 9 if (username.equals("admin")&&password.equals("admin123")) { 10 cookie = new Cookie("login", "true"); 11 response.addCookie(cookie); 12 return "登录成功"; 13 } 14 return "用户名或者是密码错误!"; 15 } 16 17 }
8.Cookies验证和返回用户列表的post接口开发
8.1安装lombok插件
8.2引入lombok依赖,lombok通过添加注解的方式,不需要为类编写getter或eques方法,同时可以自动化日志变量
1 <dependency> 2 <groupId>org.projectlombok</groupId> 3 <artifactId>lombok</artifactId> 4 <version>1.16.14</version> 5 </dependency
8.3新建实体类
1 package com.test.pojo; 2 3 import lombok.Data; 4 5 @Data 6 public class User { 7 private String username; 8 private String password; 9 private String name; 10 private int age; 11 }
8.4Cookies验证和返回用户列表的post接口开发代码
1 @PostMapping("/getUsersList") 2 @ApiOperation(value = "获取用户列表") 3 public String getUsersList(HttpServletRequest request,@RequestBody User u){ 4 User user; 5 Cookie[] cookies = request.getCookies(); 6 if (cookies ==null) { 7 return "参数不合法"; 8 } 9 for(Cookie c:cookies) { 10 if (c.getName().equals("login")&&c.getValue().equals("true") 11 &&u.getUsername().equals("admin") 12 &&u.getPassword().equals("admin123")) { 13 user = new User(); 14 user.setName("李四"); 15 user.setAge(24); 16 user.setUsername("lisi"); 17 user.setPassword("admin123"); 18 return user.toString(); 19 } 20 } 21 return "参数不合法"; 22 }