008-SpringBoot的restful的使用

1.Springboot下的SpringMVC注解

1.1 注解解释

  • 1.1 Controller注解
    Spring MVC 的注解,处理 http 请求

  • 1.2 @RestController注解
    Spring 4 后新增注解,是@Controller 注解功能的增强是 @Controller 与@ResponseBody 的组合注解
    如果一个 Controller 类添加了@RestController,那么该 Controller 类下的所有方法都相当于添加了@ResponseBody 注解用于返回字符串或 json 数据

  • 1.3 @RequestMapping(常用)
    支持 Get 请求,也支持 Post 请求

  • 1.4 @GetMapping
    RequestMapping 和 Get 请求方法的组合,只支持 Get 请求Get 请求主要用于查询操作

  • 1.5 @PostMapping
    RequestMapping 和 Post 请求方法的组合,只支持 Post 请求,Post 请求主要用户新增数据

  • 1.6 @PutMapping
    RequestMapping 和 Put 请求方法的组合,只支持 Put 请求,Put 通常用于修改数据

  • 1.7 @DeleteMapping
    RequestMapping 和 Delete 请求方法的组合,只支持 Delete 请求,通常用于删除数据

1.2 案例

  • 1 、代码编写
    创建一个 MVCController,里面使用上面介绍的各种注解接收不同的请求
package com.zzy.springboot.web;

import org.springframework.web.bind.annotation.*;

@RestController
RestController 注解相当于加了给方法加了@ResponseBody 注解,所以是不能跳转页面的,
//只能返回字符串或者 json 数据
public class MVCController {

    @GetMapping(value = "/query")
    public String get() {
        return "@GetMapping 注解,通常查询时使用";
    }
    @PostMapping(value = "/add")
    public String add() {
        return "@PostMapping 注解,通常新增时使用";
    }
    @PutMapping(value = "/modify")
    public String modify() {
        return "@PutMapping 注解,通常更新数据时使用";
    }
    @DeleteMapping(value = "/remove")
    public String remove() {
        return "@DeleteMapping 注解,通常删除数据时使用";
    }

}

  • 2、运行

在这里插入图片描述

1.3 使用Postman测试

1.3.1 Http 接口请求工具 Postman 介绍

因为通过浏览器输入地址,默认发送的只能是 get 请求,通过 Postman 工具,可以模拟发送不同类型的请求,并查询结果

1.3.2 主界面介绍

在这里插入图片描述

1.3.3 测试结果

  • 查询

  • 在这里插入图片描述

  • 新增

  • 在这里插入图片描述

  • 修改

  • 在这里插入图片描述

  • 删除

  • 在这里插入图片描述

2.Spring Boot 实现 RESTful

2.1 认识 RESTFul

  • REST(英文:Representational State Transfer,简称 REST)一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次,
  • 任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构
  • 比如我们要访问一个 http 接口:
    • http://localhost:8080/boot/order?id=1021&status=1
    • 采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1

2.2 Spring Boot 开发 RESTFul

  • 1、@PathVariable

    • 获取 url 中的数据
    • 该注解是实现 RESTFul 最主要的一个注解
  • 2、@PostMapping

    • 接收和处理 Post 方式的请求
  • 3、@DeleteMapping

    • 接收 delete 方式的请求,可以使用GetMapping 代替
  • 4、@PutMapping

    • 接收 put 方式的请求,可以用 PostMapping 代替
  • 5、@GetMapping

    • 接收 get 方式的请求

2.3 案例

2.3.3 编辑pijo实体类

package com.zzy.springboot.pojo;

public class Student {

    private Integer id;

    private String name;

    private Integer age;

    public Student() {
    }

    public Student(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

2.3.2 编辑StudentController

package com.zzy.springboot.web;

import com.zzy.springboot.pojo.Student;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;

@RestController
public class StudentController {

    @RequestMapping(value = "/student/query")
    public Object student1(Integer id,Integer age){
        Student student = new Student();
        student.setId(id);
        student.setAge(age);
        return  student;
    }

    //RESTful将请求参数放置在请求路径中
    @GetMapping(value = "/student/query/{id}/{age}")
    public Object student2(@PathVariable("id") Integer id,
                           @PathVariable("age") Integer age){
        HashMap<String,Object> map = new HashMap();
        map.put("id", id);
        map.put("age", age);
        return map;
    }

    // 新增数据请求方式
    @PostMapping(value = "/student/{id}")
    public Object addStudent(@PathVariable("id") Integer id){
        return "add stu success"+id;
    }


    //修改数据请求方式
    @PutMapping(value = "/student/{id}")
    public Object updateStudent(@PathVariable("id") Integer id){
        return "update stu success"+id;
    }

    //student3和student2中参数名称不一致
    @DeleteMapping(value = "/student/delete/{id}/{ageS}")
    public Object student3(@PathVariable("id") Integer id,
                           @PathVariable("ageS") Integer age){
        HashMap<String,Object> map = new HashMap();
        map.put("id", id);
        map.put("age", age);
        return map;
    }

    //student4和student3请求冲突 更改请求路径中参数的位置
    @DeleteMapping(value = "/student/{id}/delete/{city}")
    public Object student4(@PathVariable("id") Integer id,
                           @PathVariable("city") Integer city){
        HashMap<String,Object> map = new HashMap();
        map.put("id", id);
        map.put("city", city);
        return map;
    }
}

2.3.3 运行主启动类

在这里插入图片描述

2.3.4 使用Postman进行测试访问

  • 1、查询
  • http://localhost:8012/student/query/11/22

在这里插入图片描述

  • 2、新增
  • http://localhost:8012/student/11

在这里插入图片描述

  • 3、修改
  • http://localhost:8012/student/33333

在这里插入图片描述

  • 4、删除方式一
  • http://localhost:8012/student/delete/1/33

在这里插入图片描述

  • 5、删除方式二 (与方式一的请求路径冲突,改变请求参数位置)
    -http://localhost:8012/student/1/delete/222

在这里插入图片描述

2.4 总结

其实这里我们能感受到的好处

  • 传递参数变简单了
  • 服务提供者对外只提供了一个接口服务,而不是传统的 CRUD 四个接口

2.5 RESTful 原则

(1)每一个URI代表一种资源;
(2)客户端和服务器之间,传递这种资源的某种表现层;
(3)客户端通过四个HTTP动词,对服务器端资源进行操作,实现”表现层状态转化”。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值