Restful是一种设计风格。对于我们Web开发人员来说。就是使用一个url地址表示一个唯一的资源。然后把原来的请求参数加入到请求资源地址中。然后原来请求的增,删,改,查操作。改为使用HTTP协议中请求方式GET、POST、PUT、DELETE表示。
把请求参数加入到请求的资源地址中
原来的增,删,改,查。使用HTTP请求方式,POST、DELETE、PUT、GET分别一一对应。
GET请求 | 对应 | 查询 |
http://ip:port/工程名/book/1(http://ip:port/工程名/book) | HTTP请求GET | 表示要查询id为1的图书(表示查询全部的图书) |
POST请求 | 对应 | 添加 |
http://ip:port/工程名/book | HTTP请求POST | 表示要添加一个图书 |
PUT请求 | 对应 | 修改 |
http://ip:port/工程名/book/1 | HTTP请求PUT | 表示要修改id为1的图书信息 |
DELETE请求 | 对应 | 删除 |
http://ip:port/工程名/book/1 | HTTP请求DELETE | 表示要删除id为1的图书信息 |
原文链接:https://blog.csdn.net/weixin_51429303/article/details/114577031
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>3.1.4version>
<relativePath/>
parent>
<groupId>com.ndkygroupId>
<artifactId>HelloWorldartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>HelloWorldname>
<description>HelloWorlddescription>
<properties>
<java.version>17java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
请求data中所有数据,如果data为空就返回"Hello SpringBoot"字符串
@RequestMapping(“/hello”) 用于设置该controller中的所有请求的根请求路径为/hello
package com.ndky.helloworld.controller;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* @author LikeYouDo
* @date 2023/10/12 15:17
*/
@RestController
@RequestMapping("/hello")
public class HelloController {
List<Map<String, Object>> data = new ArrayList<>();
/**
* 获取所有数据
*
* @return
*/
@GetMapping()
public String getHello() {
return data.isEmpty() ? "Hello SpringBoot" : "select data: " + data;
}
}
根据id查询数据,URI中带需要查询的id值
/**
* 根据id查询数据
*
* @param id
* @return
*/
@GetMapping("/{id}")
public String getHelloById(@PathVariable("id") Integer id) {
if (id != null) {
for (Map<String, Object> datum : data) {
if (datum.get("id").equals(id)) {
return datum.toString();
}
}
}
return "id不存在";
}
添加数据,请求体中携带数据
/**
* 添加一个新的数据
*
* @param value
* @return
*/
@PostMapping()
public String postHello(@RequestBody HashMap<String, Object> value) {
data.add(value);
return "add data: id=" + value.get("id") + ", name=" + value.get("name");
}
添加的数据
{
"id": 1,
"name": "王五"
}
URI中带需要查询的id值,请求中携带需要修改的数据,修改存入的id值对应的数据
/**
* 根据id修改name
*
* @param value
* @return
*/
@PutMapping("/{id}")
public String putHello(@PathVariable Integer id, @RequestBody HashMap<String, Object> value) {
if (value.get("name")==null){
return "没有传入name值";
}
if (id != null) {
for (Map<String, Object> datum : data) {
if (datum.get("id").equals(id)) {
datum.replace("name", value.get("name"));
return "update data: id=" + datum.get("id") + ", name=" + datum.get("name");
}
}
}
return "id不存在";
}
URI中带需要查询的id值,删除id对应的数据
/**
* 根据id删除数据
* @param id
* @return
*/
@DeleteMapping("/{id}")
public String deleteHello(@PathVariable Integer id) {
Map<String, Object> tmp = null;
if (id != null) {
for (Map<String, Object> datum : data) {
if (datum.get("id").equals(id)) {
tmp = datum;
}
}
}
if (tmp!=null){
data.remove(tmp);
return "delete data: id=" + id;
}
return "id不存在";
}
由上述代码可得,Resatful风格代码的关键在于URI地址可以相同,然后通过不同的请求方式来完成对应的CRUD操作,并且在完成相应的操作后需要进行查询操作,看看是否操作成功