Spring-Boot-2x十构建优雅的RESTful接口

7次阅读

共计 2206 个字符,预计需要花费 6 分钟才能阅读完成。

RESTful

相信在座的各位对于 RESTful 都是略有耳闻,那么 RESTful 到底是什么呢?

REST(Representational State Transfer)表述性状态转移是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。需要注意的是,REST 是 设计风格而不是标准。REST 通常基于使用 HTTP,URI,和 XML(标准通用标记语言下的一个子集)以及 HTML(标准通用标记语言下的一个应用)这些现有的广泛流行的协议和标准。

也许这段话有些晦涩难懂,换个角度我们来解释一下 RESTful。

首先来看一组例子:

// 查询所有人员(传统)localhost:8088/api/user/findAll 请求方式:GET
// 查询所有人员(RESTful)localhost:8088/api/users    请求方式:GET

// 修改人员(传统)localhost:8088/api/user/update 请求方式:POST
// 修改人员(RESTful)localhost:8088/api/users    请求方式:PUT

// 添加人员(传统)localhost:8088/api/user/add    请求方式:POST
// 添加人员(RESTful)localhost:8088/api/users    请求方式:POST

// 删除人员(传统)localhost:8088/api/user/delete    请求方式:DELETE
// 删除人员(RESTful)localhost:8088/api/users    请求方式:DELETE

我们通常称地址栏中输入的地址为 URI(Uniform Resource Identifier),翻译成中文就是 统一资源标识符

资源,我们在浏览器页面上看到的东西都可以称之为资源,比如图片,文字,语音等等。

而 URI 就是用于定位这些资源的位置的,RESTful 风格的接口中只出现了表示资源的名词,关于这个资源的操作,通过 HTTP 内置的几种请求类型来区分。同一个路径localhost:8088/api/users,因为请求方式的不同,而去找寻不同的接口,完成对资源状态的转变。

总结一下,REST 就是指对同一个 URI 的资源的不同请求方式(GET,POST,PUT,DELETE)(表述)下的做出的不同的操作(查,增,改,删),改变的是资源的状态,即表述性状态转移。一个符合 REST 风格的 URI 就可以称之一个 RESTful 的接口。

看到这里,相信 RESTful 已经了解的差不多了,下面我们来看看在 Spring Boot 中如何去使用

SpringMVC 构建 RESTful 接口

SpringMVC 中给我们提供了一些注解,可以帮助我们去构建 RESTful 的接口,下面来直接看代码:

package indi.viyoung.viboot.restful.controller;

import indi.viyoung.viboot.restful.entity.User;
import indi.viyoung.viboot.restful.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author viyoung
 * @since 2019-01-23
 */
@RestController
@RequestMapping("/users")
@Slf4j
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> get() {log.info("GET 方法执行。。。");
        return userService.list();}

    @GetMapping(value = "/{id}")
    public User get(@PathVariable String id) {log.info("GET..{}... 方法执行。。。",id);
        return userService.getById(id);
    }

    @PostMapping
    public void post() {log.info("POST 方法执行。。。");
    }

    @PutMapping
    public void put() {log.info("PUT 方法执行。。。");
    }

    @DeleteMapping
    public void delete() {log.info("DELETE 方法执行。。。");
    }
}

这里的工程创建可以参照 Spring Boot 2.x(五):Mybatis-Plus + Spring Boot。

下面我们也许需要一个前端的工程或者 POSTMAN 等测试接口的工具来发送不同的请求,我这里已经写好了一个前端的基于 vue 的工程,有需要的可以去下载一下:viboot-front。记得顺手点个 star 哟~

依次点击这五个按钮,可以看到后台的控制台分别打印出了不同的语句:

公众号

原创文章,才疏学浅,如有不对之处,万望告知!

正文完
 0