Spring Boot 2.x (十):构建优雅的RESTful接口

RESTful

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

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

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

首先来看一组例子:java

//查询全部人员(传统)
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),翻译成中文就是统一资源标识符git

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

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

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

看到这里,相信RESTful已经了解的差很少了,下面咱们来看看在Spring Boot中如何去使用api

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哟~


依次点击这五个按钮,能够看到后台的控制台分别打印出了不一样的语句:

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

公众号

您的推荐就是对我最大的支持!

相关文章
相关标签/搜索