接口
定义
- API (Application Programming Interface,应用程序接口)
- 是一些预先定义的接口(如函数、HTTP接口,或指软件系统不同组成部分衔接的约定)
- 是用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程, 而又无需访问源码, 或理解内部工作机制的细节
编程体现
- 接口在代码编程中的具体表现, 可以指访问Servlet或Controller的url或者调用其他程序的函数
接口架构风格
- 通俗来说就是api的组织方式(样子)
- 例如: http://localhost:8080/myboot/addStudent?name=yoyo&age=18
- 在地址上提供了访问的资源名称addStudent, 在其后使用了get方式传递参数, 这就是一种http协议的接口风格
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