首页 > 其他分享 >SpringBoot 05: 接口架构风格 + RESTful接口风格

SpringBoot 05: 接口架构风格 + RESTful接口风格

时间:2022-11-14 16:46:42浏览次数:53  
标签:请求 05 age get 接口 public 资源 SpringBoot

接口

定义

  • API (Application Programming Interface,应用程序接口)
  • 是一些预先定义的接口(如函数、HTTP接口,或指软件系统不同组成部分衔接的约定)
  • 是用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程, 而又无需访问源码, 或理解内部工作机制的细节

编程体现

  • 接口在代码编程中的具体表现, 可以指访问Servlet或Controller的url或者调用其他程序的函数

接口架构风格

RESTful

RESTful风格

  • REST: (英文: Representational State Transfer 中文:表现层状态转移)

  • REST: 是一种接口的架构风格和设计的理念, 不是标准

  • 优点:更简洁,更有层次

表现层状态转移

  • 表现层: 就是视图层,显示资源的,通过视图页面,jsp等显示操作资源的结果
  • 状态: 视图层资源所处的状态
  • 转移: 资源可以变化的。 资源能创建,是new的状态,资源创建后可以查询资源, 能看到资源的内容, 这个资源内容 ,可以被修改, 修改后资源和之前的不一样

REST要素

  • 用REST表示资源和对资源的操作,在互联网中,表示一个资源或者一个操作
  • 资源使用url表示的,在互联网,使用的图片,视频,文本,网页等等都是资源,资源是用名词表示
  • 对资源的操作:
    • 查询资源: 通过url找到资源
    • 创建资源: 添加资源
    • 更新资源:更新资源, 编辑
    • 删除资源:去除

SpringBoot中使用RESTful

注解支持

  • @PathVariable : 从url中获取数据

  • @GetMapping: 支持的get请求方式,等同于@RequestMapping( method=RequestMethod.GET)

  • @PostMapping: 支持post请求方式,等同于@RequestMapping( method=RequestMethod.POST)

  • @PutMapping: 支持put请求方式, 等同于@RequestMapping( method=RequestMethod.PUT)

  • @DeleteMapping: 支持delete请求方式,等同于@RequestMapping( method=RequestMethod.DELETE)

  • @RestController: 符合注解,是@Controller和@ResponseBody组合

    • 在类的上面使用@RestController,表示当前类者的所有方法都加入了@ResponseBody

对get以及post请求的响应

  • 默认只支持响应get和post请求

  • 注意:请求方式和url不能同时重复,下面的两个get方法实际是冲突的,容器无法正确区分解析

package com.example.controller;

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

@RestController
public class MyRestController {

    /**
     * 用于查询数据
     */
    @GetMapping("/student/{id}")
    public String getStudentById(@PathVariable Integer id){
        return "get请求,待获取的学生id: " + id;
    }

    //请求方式和url不能同时重复
    @GetMapping("/student/{age}")
    public String getStudentByAge(@PathVariable Integer age){
        return "get请求,待获取的学生age: " + age;
    }


    /**
     * 用于创建数据
     */
    @PostMapping("/student/{name}/{age}")
    public String saveStudent(@PathVariable String name, @PathVariable Integer age){
        return "post请求,新创建的学生name: " + name + ",age: " + age;
    }
}

页面支持put和delete请求

  • 前端页面
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>页面支持put和delete</title>
</head>
<body>
<form action="student/test/put" method="post">
    <input type="hidden" name="_method" value="put">
    <input type="submit" value="提交put请求">
</form>

<form action="student/test/delete" method="post">
    <input type="hidden" name="_method" value="delete">
    <input type="submit" value="提交delete请求">
</form>

</body>
</html>
  • controller层
package com.example.controller;

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

@RestController
public class MyRestController {
    
    //页面支持put和delete
    @PutMapping("/student/test/put")
    public String putTest(){
        return "页面支持put请求";
    }

    @DeleteMapping("/student/test/delete")
    public String deleteTest(){
        return "页面支持delete请求";
    }
}
  • application.properties
#启用springboot中的请求方式过滤器,用来支持在页面中使用put和delete等方法
spring.mvc.hiddenmethod.filter.enabled=true

标签:请求,05,age,get,接口,public,资源,SpringBoot
From: https://www.cnblogs.com/nefu-wangxun/p/16889441.html

相关文章

  • 【Vue-05】修改Vue的默认配置
    修改Vue的默认配置Vue脚手架隐藏了所有webpack相关的配置,若想查看具体的webpack配置,请执行:vueinspect>output.js,若要个性化配置Vue脚手架,就需要创建vue.config.js这一......
  • Java高并发处理优惠券防超卖接口!
    问题抛出在近期的项目里面有一个功能是领取优惠券的功能。问题描述:每一个优惠券一共发行多少张,每个用户可以领取多少张:如:A优惠券一共发行120张,每一个用户可以领取140张,当一......
  • 关于System x3650 M4-Exsi-服务器的IMM接口创建只读权限的audit账号
    IMM全称为: IntegratedManagementModule,是IBM服务器的服务器远程管理接口系统本文服务器型号:IBM Systemx3650M4-安装的Exsi系统操作:登录IMM,创建只读权限的audi......
  • rocketMq springboot2 发送广播消息
    广播消息:一个点发送,所有有监听订阅的程序都能收到消息。应用场景:一个配置更新了,其他点都需要知道配置更新需加载。 mq创建主要是创建组时与队列有点区别mqadminup......
  • rocketMq springboot2 发送有序消息
    有序消息:所有信息往mq中,在broker.conf配置文件中指定产生队列数量。如果是普通队列时,所有消息,会分发到默认队列的各个队列中。是无序的。有序则是,所有消息发送,都指定一个......
  • rocketMq springboot2接入配置
    rocketmq的接入配置。 引入jar包<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId></dependen......
  • [LeetCode] 805. 数组的均值分割
    设变量sum:数组的和,n:数组元素个数,tot:子数组和,cnt:子数组元素个数通过简单的公式变换可以得到:sum/n=tot/cntsum/n的值是确定的,所以也就是需要找到一个子数......
  • 外网访问内网SpringBoot【免费内网穿透】
    在本地搭建的SpringBoot项目,在内网能够正常访问,想要在外网环境下也能够访问,可以做内网穿透来实现,不需要公网IP,也不需要进入到路由器配置。这里主要介绍通过cpolar内网穿透......
  • 第2节 2020.05.16 智能互联网之关键系统实践篇【二】
                                    给key加锁,并且key数+1统计到100做限制         ......
  • python3-基础篇-05-数据类型及类型转换
     一、数据类型python的数据类型分别有以下几类类型python3 python2说明Number(数字)int(整型)、float(浮点型)、complex(复数)lfloatong(长整型)在python3里,不区分整型与长整型,统......