📜  Spring Boot – REST 示例

📅  最后修改于: 2022-05-13 01:55:04.687000             🧑  作者: Mango

Spring Boot – REST 示例

众所周知,当今世界,大多数 Web 应用程序都遵循客户端-服务器架构。应用程序本身是客户端或前端部分,它需要调用服务器或后端来获取或保存此通信使用 HTTP 协议发生的数据,相同的协议是 Web 的力量。在服务器上,我们公开了可通过 HTTP 协议访问的一堆服务。然后客户端可以通过发送 HTTP 请求直接调用服务。

现在,这就是REST 发挥作用的地方。 Rest代表表示状态传输,它基本上是构建这些 HTTP 服务的约定。所以我们使用一个简单的 HTTP 协议原理来提供对CREATEREADUPDATEDELETE数据的支持。我们将这些操作统称为CRUD操作。简而言之,它是开发人员在创建 API 时遵循的一组规则。其中一条规则规定,当您链接到特定 URL 时,您应该能够获取一段数据(称为资源)。让我们通过创建一个简单地以JSON形式返回 Book 数据的示例来实现一个 RSET 应用程序并理解 REST 方法。

以示例休息

设置spring项目:

所以首先我们将在 STS(Spring tool suite) IDE 中设置 spring 项目。下面给出了谁的指示

  • 单击文件 -> 新建 -> 项目 -> 选择 Spring Starter 项目 -> 单击下一步。
  • 将打开一个新建对话框,您将在其中提供与项目相关的信息,如项目名称、 Java版本、Maven 版本等。
  • 之后选择所需的 maven 依赖项,如Spring WebSpring 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);
    }
  
}


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