zoukankan      html  css  js  c++  java
  • 项目实战接口开发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     }
  • 相关阅读:
    input光标位置
    清除浮动
    CSS的两种盒模型
    网页中常用的命名
    清除inline-block元素默认间距
    自定义复选框样式及全选操作
    如何用elementui去实现图片上传和表单提交,用axios的post方法
    datatables
    9273:PKU2506Tiling
    666:放苹果
  • 原文地址:https://www.cnblogs.com/heyuling/p/12091284.html
Copyright © 2011-2022 走看看