Spring Boot – REST 示例
众所周知,当今世界,大多数 Web 应用程序都遵循客户端-服务器架构。应用程序本身是客户端或前端部分,它需要调用服务器或后端来获取或保存此通信使用 HTTP 协议发生的数据,相同的协议是 Web 的力量。在服务器上,我们公开了可通过 HTTP 协议访问的一堆服务。然后客户端可以通过发送 HTTP 请求直接调用服务。
现在,这就是REST 发挥作用的地方。 Rest代表表示状态传输,它基本上是构建这些 HTTP 服务的约定。所以我们使用一个简单的 HTTP 协议原理来提供对CREATE 、 READ 、 UPDATE和DELETE数据的支持。我们将这些操作统称为CRUD操作。简而言之,它是开发人员在创建 API 时遵循的一组规则。其中一条规则规定,当您链接到特定 URL 时,您应该能够获取一段数据(称为资源)。让我们通过创建一个简单地以JSON形式返回 Book 数据的示例来实现一个 RSET 应用程序并理解 REST 方法。
以示例休息
设置spring项目:
所以首先我们将在 STS(Spring tool suite) IDE 中设置 spring 项目。下面给出了谁的指示
- 单击文件 -> 新建 -> 项目 -> 选择 Spring Starter 项目 -> 单击下一步。
- 将打开一个新建对话框,您将在其中提供与项目相关的信息,如项目名称、 Java版本、Maven 版本等。
- 之后选择所需的 maven 依赖项,如Spring Web 、 Spring Boot DevTools (提供快速应用程序重启、LiveReload 和配置以增强开发体验。)
- 单击完成。
项目结构:
pom.xml:
XML
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.6.1
com.example
ex
0.0.1-SNAPSHOT
ex
Demo project for Spring Boot
11
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-devtools
runtime
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
Java
package com.example.demo.modal;
public class Book {
private long id;
private String name;
private String title;
public Book() {
super();
}
public Book(long id, String name, String title) {
super();
this.id = id;
this.name = name;
this.title = title;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
Java
package com.example.demo.service;
import java.util.HashSet;
import com.example.demo.modal.Book;
public interface BookService {
HashSet findAllBook();
Book findBookByID(long id);
void addBook(Book b);
void deleteAllData();
}
Java
package com.example.demo.service;
import java.util.HashSet;
import org.springframework.stereotype.Service;
import com.example.demo.modal.Book;
@Service
public class BookServiceImpl implements BookService {
HashSet bookList = new HashSet();
@Override
public HashSet findAllBook() {
if (bookList.isEmpty())
return null;
else
return bookList;
}
@Override
public Book findBookByID(long id) {
Book book = bookList.stream().filter(b -> b.getId() == id).findAny().orElse(null);
return book;
}
@Override
public void addBook(Book b) {
bookList.add(b);
}
@Override
public void deleteAllData() {
bookList.clear();
}
}
Java
package com.example.demo.controller;
import java.util.ArrayList;
import java.util.HashSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.modal.Book;
import com.example.demo.service.BookServiceImpl;
@RestController
public class BookController {
@Autowired
BookServiceImpl bookServiceImpl;
@PostMapping("/")
public void addBook(@RequestBody Book book) {
bookServiceImpl.addBook(book);
}
@GetMapping("/findall")
public HashSet getAllBook() {
return bookServiceImpl.findAllBook();
}
@GetMapping("/findbyid/{id}")
public Book geBookById(@PathVariable long id) {
return bookServiceImpl.findBookByID(id);
}
@DeleteMapping("/delete")
public void deleteBook() {
bookServiceImpl.deleteAllData();
}
}
Java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ExApplication {
public static void main(String[] args) {
SpringApplication.run(ExApplication.class, args);
}
}
Note: No need to add anything to the application.properties because we didn’t use a database.
POJO(普通旧Java对象)类:
Java
package com.example.demo.modal;
public class Book {
private long id;
private String name;
private String title;
public Book() {
super();
}
public Book(long id, String name, String title) {
super();
this.id = id;
this.name = name;
this.title = title;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
服务接口和服务实现类
在这里,我们创建了一个名为BookService的接口,其中包含我们的应用程序将提供给用户的所有服务方法。以及实现 BookService 接口的BookServiceImpl类。
Java
package com.example.demo.service;
import java.util.HashSet;
import com.example.demo.modal.Book;
public interface BookService {
HashSet findAllBook();
Book findBookByID(long id);
void addBook(Book b);
void deleteAllData();
}
Java
package com.example.demo.service;
import java.util.HashSet;
import org.springframework.stereotype.Service;
import com.example.demo.modal.Book;
@Service
public class BookServiceImpl implements BookService {
HashSet bookList = new HashSet();
@Override
public HashSet findAllBook() {
if (bookList.isEmpty())
return null;
else
return bookList;
}
@Override
public Book findBookByID(long id) {
Book book = bookList.stream().filter(b -> b.getId() == id).findAny().orElse(null);
return book;
}
@Override
public void addBook(Book b) {
bookList.add(b);
}
@Override
public void deleteAllData() {
bookList.clear();
}
}
休息控制器:
这是ExController类,我们在其中公开了我们创建的所有 API。
API 列表
- http://localhost:8080/
- 保存数据
- http://localhost:8080/findbyid/2
- 按 id 查找图书
- http://localhost:8080/findall
- 查找所有书籍
- http://localhost:8080/delete
- 删除所有书籍
Java
package com.example.demo.controller;
import java.util.ArrayList;
import java.util.HashSet;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;
import com.example.demo.modal.Book;
import com.example.demo.service.BookServiceImpl;
@RestController
public class BookController {
@Autowired
BookServiceImpl bookServiceImpl;
@PostMapping("/")
public void addBook(@RequestBody Book book) {
bookServiceImpl.addBook(book);
}
@GetMapping("/findall")
public HashSet getAllBook() {
return bookServiceImpl.findAllBook();
}
@GetMapping("/findbyid/{id}")
public Book geBookById(@PathVariable long id) {
return bookServiceImpl.findBookByID(id);
}
@DeleteMapping("/delete")
public void deleteBook() {
bookServiceImpl.deleteAllData();
}
}
前应用程序。Java
运行应用程序。
Java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class ExApplication {
public static void main(String[] args) {
SpringApplication.run(ExApplication.class, args);
}
}
在 Postman 中测试 API