Springboot——Controller层开发、请求与响应、RESTful开发规范

目录

一、入门案例(小了解,没啥用)

1.1 创建Springboot工程

1.2 导入maven坐标

1.3 controller层代码

1.4 postman测试

二、 REST常用注解

 2.1 @Controller     

 2.2  @RequestMapping(请求映射路径)

 2.3  @ResponseBody

 2.4 @ComponentScan

 2.5  @RequestParam

 2.6 @RequestBody

 2.7 @RequestBody、@RequestParam、@PathVariable区别

 2.8 @DateTimeFormat

 2.9  @PathVariable

 2.10 @RestController

 2.11 @PostMapping

三、请求与响应

  3.1 请求方式

     3.1.1 Get请求普通参数传递

     3.1.2 Post请求普通参数传递

四、请求参数(了解,以后常用的是传JSON)

 4.1 普通参数(不同名称的映射)

 4.2 POJO类型参数

 4.3 嵌套POJO类型参数

 4.4 数组类型参数

 4.5 集合类型参数

五、请求与响应(重要,传送JSON数据)

5.1 JSON请求参数

 5.1.1 JSON数据

5.1.2  JSON对象(POJO)

5.1.3 JSON对象(POJO集合参数)

 5.2 日期型参数传递

 5.3 响应

5.3.1 响应页面(用的很少,几乎不用)

5.3.2  响应文本数据

 5.3.3 响应JSON数据

六、REST风格

6.1 RESTful 快速开发(简化)


 

一、入门案例(小了解,没啥用)

 1.1 创建Springboot工程

1.2 导入maven坐标

        
            org.springframework.boot
            spring-boot-starter-web
        

1.3 controller层代码


@Controller //成功spring的bean  我们这里不使用@Component
            //@Controller  这是SpringMVC声明bean的专门注解
public class UserController {


    /**
     * 提供给外部,处理请求的操作
     * @return
     */
    @RequestMapping("/save")   //设置当前操作的访问路径
    @ResponseBody                // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
                                 //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
    public String save(){
        System.out.println("user save...");
//      我们选择return一个JSON数据
        return "{'module':'springboot'}";
    }


}

 1.4 postman测试

    当然这个时候post也可以

Springboot——Controller层开发、请求与响应、RESTful开发规范_第1张图片

二、 REST常用注解

    springboot中常用注解在下面这篇博客当中有一部分

Springboot中常用注解的使用语境、方法以及常用的maven坐标_我爱布朗熊的博客-CSDN博客_lombok maven坐标

    2.1 @Controller     

       类型:类注解

       作用:设定spring的核心控制器

@Controller //成功spring的bean  我们这里不使用@Component
            //@Controller  这是SpringMVC声明bean的专门注解
public class UserController {
}

    2.2  @RequestMapping(请求映射路径)

         类型:方法注解、类注解

         作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀

    @RequestMapping("/save")   //设置当前操作的访问路径
    public void save(){
        System.out.println("user save...");

    }

       Springboot——Controller层开发、请求与响应、RESTful开发规范_第2张图片

 

     当然这个注解也可以放到类上面,表示这个类中的方法请求路径的前缀,一般来说一个类的请求前缀都是一个样的,所以我们就没有必要在每个方法中都重复写相同的路径,我们把这一部分相同的路径提取出来放到类上面,这样就方便了我们以后的编码,也更好的将代码业务进行分类,避免出现同一个路径对应多个方法的错误形式

@Controller //成功spring的bean  我们这里不使用@Component
            //@Controller  这是SpringMVC声明bean的专门注解
@RequestMapping("/save")   //设置当前层的请求前缀
public class UserController {
}

     2.3  @ResponseBody

         类型:方法注解

         作用:设置当前控制器方法响应内容为当前返回值,无需解析

    /**
     * 提供给外部,处理请求的操作
     * @return
     */
    @RequestMapping("/save")   //设置当前操作的访问路径
    @ResponseBody                // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
                                 //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
    public String save(){
        System.out.println("user save...");
//      我们选择return一个JSON数据
        return "{'module':'springboot'}";
    }

  2.4 @ComponentScan

     Springboot——Controller层开发、请求与响应、RESTful开发规范_第3张图片

 2.5  @RequestParam

   作用:当请求参数与形参变量名不同,使用@RequestParam绑定参数关系

Springboot——Controller层开发、请求与响应、RESTful开发规范_第4张图片

 

还有两个参数

  •  required:是否为必传参数
  •  defaultValue:参数默认值

2.6 @RequestBody

Springboot——Controller层开发、请求与响应、RESTful开发规范_第5张图片

 

2.7 @RequestBody、@RequestParam、@PathVariable区别

Springboot——Controller层开发、请求与响应、RESTful开发规范_第6张图片

Springboot——Controller层开发、请求与响应、RESTful开发规范_第7张图片

 

2.8 @DateTimeFormat

Springboot——Controller层开发、请求与响应、RESTful开发规范_第8张图片

内部有个Converter接口,就是将传递的参数和收集的参数的类型进行转换的

Springboot——Controller层开发、请求与响应、RESTful开发规范_第9张图片 

Springboot——Controller层开发、请求与响应、RESTful开发规范_第10张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第11张图片

 

 2.9  @PathVariable

Springboot——Controller层开发、请求与响应、RESTful开发规范_第12张图片

 

 

 2.10 @RestController

   @RestController == @ResponseBody+@Controller

 2.11 @PostMapping

  @PostMapping ==@RequestMapping( method = RequestMethod.POST )

三、请求与响应

   3.1 请求方式

      3.1.1 Get请求普通参数传递

    /**
     * 提供给外部,处理请求的操作
     * @return
     */
    @RequestMapping("/commonParam")   //设置当前操作的访问路径
    @ResponseBody                // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
                                 //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
    public String save(String name){
        System.out.println("普通参数传递 name="+name);
//      我们选择return一个JSON数据
        return "{'module':'springboot'}";
    }

   Springboot——Controller层开发、请求与响应、RESTful开发规范_第13张图片

传递多个参数呢?

    /**
     * 提供给外部,处理请求的操作
     * @return
     */
    @RequestMapping("/commonParam")   //设置当前操作的访问路径
    @ResponseBody                // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
                                 //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
    public String save(String name,String age){
        System.out.println("普通参数传递 name="+name);
        System.out.println("普通参数传递 age="+age);
//      我们选择return一个JSON数据
        return "{'module':'springboot'}";
    }

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第14张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第15张图片

     3.1.2 Post请求普通参数传递

   我们可以看下图的变化,我们选择了POST,然后路径中不再有各种Params

   对于请求体编辑参数的位置我们是选择form-data还是x-www-form-urlencoded?

Springboot——Controller层开发、请求与响应、RESTful开发规范_第16张图片

Springboot——Controller层开发、请求与响应、RESTful开发规范_第17张图片

 

 

四、请求参数(了解,以后常用的是传JSON)

  参数种类:

  • 普通参数
  • POJO类型参数
  • 嵌套POJO类型参数
  • 数组类型参数
  • 集合类型参数

 4.1 普通参数(不同名称的映射)

我们还是看看刚刚的get请求

现在我们修改一个地方,将发送请求时携带的params的参数名和后端接收的参数名不一致

    @RequestMapping("/commonParam")      //设置当前操作的访问路径
    @ResponseBody                          // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
                                           //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
    public String save(@RequestParam("name") String username, String age){
        System.out.println("普通参数传递 name="+username);
        System.out.println("普通参数传递 age="+age);
//      我们选择return一个JSON数据
        return "{'module':'springboot'}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第18张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第19张图片

 

 4.2 POJO类型参数


    @RequestMapping("/pojoParam")
    @ResponseBody
    public String pojoParam(User user){
        System.out.println("普通参数传递 user="+user);

//      我们选择return一个JSON数据
        return "{'module':'pojo param'}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第20张图片

 

 

 4.3 嵌套POJO类型参数

public class User {
    private String name;
    private int age;
    private Address address;
}

Springboot——Controller层开发、请求与响应、RESTful开发规范_第21张图片

 

 

4.4 数组类型参数

    @RequestMapping("/arrayParam")
    @ResponseBody
    public String arrayParam(String[] likes){
        System.out.println("数组传参 like="+ Arrays.toString(likes));

//      我们选择return一个JSON数据
        return "{'module':'arrays'}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第22张图片

 

 

4.5 集合类型参数

    @RequestMapping("/listParam")
    @ResponseBody
    public String listParam(@RequestParam List likes){
        System.out.println("集合参数传递 like="+ likes);

//      我们选择return一个JSON数据
        return "{'module':'list param'}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第23张图片

 

 

五、请求与响应(重要,传送JSON数据)

5.1 JSON请求参数

  分类:

  •   JSON数据
  •   JSON对象(POJO)
  •   JSON数据(POJO)

 5.1.1 JSON数据

    @RequestMapping("/listParamJson")
    @ResponseBody
    public String listParamJson(@RequestBody List likes){
        System.out.println("集合参数传递 like="+ likes);

//      我们选择return一个JSON数据
        return "{'module':'list param json'}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第24张图片

 

5.1.2  JSON对象(POJO)

Springboot——Controller层开发、请求与响应、RESTful开发规范_第25张图片

Springboot——Controller层开发、请求与响应、RESTful开发规范_第26张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第27张图片

 

5.1.3 JSON对象(POJO集合参数)

Springboot——Controller层开发、请求与响应、RESTful开发规范_第28张图片

Springboot——Controller层开发、请求与响应、RESTful开发规范_第29张图片

 

 5.2 日期型参数传递

   日期类型数据基于系统不同,格式也不尽相同

日期型的参数,可以直接由一个字符串转换成data


    @RequestMapping("/dataParam")
    @ResponseBody
    public String dataParam(Date date){
        System.out.println("集合参数传递 date="+ date);

//      我们选择return一个JSON数据
        return "{'module':'date '}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第30张图片 

 

 

但是当我们传递日期参数使用中行线的形式时,就会报错,就是下图中的date1形式,这怎么呢?

Springboot——Controller层开发、请求与响应、RESTful开发规范_第31张图片

 

 将代码修改为下面这个样子就可以了

    @RequestMapping("/dateParam")
    @ResponseBody
    public String dateParam(Date date, @DateTimeFormat(pattern = "yyyy-MM-dd") Date date1){
        System.out.println("集合参数传递 date="+ date);
        System.out.println("集合参数传递 date="+ date1);

//      我们选择return一个JSON数据
        return "{'module':'date '}";
    }

Springboot——Controller层开发、请求与响应、RESTful开发规范_第32张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第33张图片

 

5.3 响应

   简单来说,将我们的处理结果返回给我们的用户(也可以说是前端,前端接收到页面后再渲染页面)

  •    响应页面
  •    响应数据 (文本数据、JSON数据)

5.3.1 响应页面(用的很少,几乎不用)

 响应页面非常的简单,将页面名称当做字符串返回

Springboot——Controller层开发、请求与响应、RESTful开发规范_第34张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第35张图片

 

5.3.2  响应文本数据

Springboot——Controller层开发、请求与响应、RESTful开发规范_第36张图片

 

 

 5.3.3 响应JSON数据

Springboot——Controller层开发、请求与响应、RESTful开发规范_第37张图片

Springboot——Controller层开发、请求与响应、RESTful开发规范_第38张图片 

Springboot——Controller层开发、请求与响应、RESTful开发规范_第39张图片

 Springboot——Controller层开发、请求与响应、RESTful开发规范_第40张图片

 

 

六、REST风格

REST :表现形式状态转换

Springboot——Controller层开发、请求与响应、RESTful开发规范_第41张图片

 

优点:

           隐藏资源的访问行为,无法通过地址得知资源是何种操作

           书写简化

Springboot——Controller层开发、请求与响应、RESTful开发规范_第42张图片

 

6.1 RESTful 快速开发(简化)

  这是之前的代码

Springboot——Controller层开发、请求与响应、RESTful开发规范_第43张图片

 

  现在的代码(很清晰)

Springboot——Controller层开发、请求与响应、RESTful开发规范_第44张图片

 

 

 

 

你可能感兴趣的:(springboot,java,spring,boot,spring)