专栏首页公众号文章Spring Boot入门系列(二十)快速实现Restful API 接口

Spring Boot入门系列(二十)快速实现Restful API 接口

spring boot入门系列文章已经写到第二十篇,前面我们讲了spring boot的基础入门的内容,也介绍了spring boot 整合mybatis,整合redis、整合Thymeleaf 模板引擎 等各种框架,同时也介绍了使用jdbcTemplate 操作数据库,配置多数据源 等系列内容。应该说spring boot 常用的功能基本上都覆盖到了。接下来说一说spring boot 比较实用的项目级的功能。首先会介绍spring boot 如何快速打造Restful API接口。

随着互联网化等逐渐深入,应用系统也变得越来越复杂,系统架构正在朝着微服务化,中台化的方向发展。这就需要各个系统、各个厂家之间的数据频繁交互。所以,使用 Restful 风格构建的应用接口适用于移动互联网厂商的业务场景,正在被越来越多的企业推荐使用。那么什么是 RESTful 呢?

一、什么是 RESTful

RESTful 是目前最流行的互联网软件架构。REST(Representational State Transfer,表述性状态转移)一词是由 Roy Thomas Fielding 在他 2000 年博士论文中提出的,定义了他对互联网软件的架构原则,如果一个架构符合 REST 原则,则称它为 RESTful 架构。

Restful 相比于 SOAP 更加简单明了,它并没有一个明确的标准,而更像是一种设计的风格。

Restful 特点包括:

  1、每一个URI代表1种资源;

  2、客户端使用GET、POST、PUT、DELETE4个表示操作方式的动词对服务端资源进行操作:GET用来获取资源,POST用来新建资源(也可以用于更新资源),PUT用来更新资源,DELETE用来删除资源;

  3、通过操作资源的表现形式来操作资源;

  4、资源的表现形式是XML或者HTML;

  5、客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都必须包含理解请求所必需的信息。

二、Spring Boot 实现Restful 方案

Spring Boot 开发Restful j接口非常简单,通过不同的注解来支持前端的请求,除了经常使用的@RestController 注解外,Spring Boot 还提了一些组合注解。这些注解来帮助简化常用的 HTTP 方法的映射,并更好地表达被注解方法的语义 。

Srping Boot 提供了与Rest 操作方式(GET、POST、PUT、DELETE)对应的注解:

  1、@GetMapping,处理 Get 请求   2、@PostMapping,处理 Post 请求   3、@PutMapping,用于更新资源   4、@DeleteMapping,处理删除请求   5、@PatchMapping,用于更新部分资源

@PutMapping 主要是用来更新整个资源的,@PatchMapping 主要表示更新部分字段

之前我们也介绍过,Spring Boot 提供了专门做数据处理的控制器:@RestController ,其实这些注解就是我们使用的 @RequestMapping 的简写版本:@GetMapping 其实就等于@RequestMapping(value = "/xxx",method = RequestMethod.DELETE) 。

三、Spring Boot 快速实现Restful

如何创建Spring Boot 项目之前的文章里面都有,这里不再重复了。可以看我之前的系列文章:https://www.cnblogs.com/zhangweizhong/category/1657780.html

1、设计接口

根据之前介绍的Restful 设计风格设计一组对用户操作的 RESTful API

  • /user POST 创建用户
  • /user/id GET 根据 id 获取用户信息
  • /user PUT 更新用户
  • /user/id DELETE 根据 id删除对应的用户

以上,就是对user操作的接口定义,在实际项目的Restful API 接口文档还会定义全部请求的数据结构体。

2、实现接口

首先创建UserController 控制器,定义之前设计的相关接口。

package com.weiz.controller;

import com.weiz.pojo.SysUser;
import com.weiz.service.UserService;
import com.weiz.utils.JSONResult;
import org.n3r.idworker.Sid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Date;

@RestController
@RequestMapping("/")
public class UserController {

    @Autowired
    private UserService userService;

    @Autowired
    private Sid sid;

    @PostMapping(value = "user")
    public JSONResult create() throws Exception {

        String userId = sid.nextShort();
        SysUser user = new SysUser();
        user.setId(userId);
        user.setUsername("spring boot" + new Date());
        user.setNickname("spring boot" + new Date());
        user.setPassword("abc123");
        user.setIsDelete(0);
        user.setRegistTime(new Date());

        userService.saveUser(user);
        return JSONResult.ok("保存成功");
    }

    @PutMapping(value = "user")
    public JSONResult update() {
        SysUser user = new SysUser();
        user.setId("10011001");
        user.setUsername("10011001-updated" + new Date());
        user.setNickname("10011001-updated" + new Date());
        user.setPassword("10011001-updated");
        user.setIsDelete(0);
        user.setRegistTime(new Date());
        userService.updateUser(user);

        return JSONResult.ok("保存成功");
    }


    @DeleteMapping("user/{userId}")
    public JSONResult delete(@PathVariable String userId) {
        userService.deleteUser(userId);
        return JSONResult.ok("删除成功");
    }

    @GetMapping("user/{userId}")
    public JSONResult queryUserById(@PathVariable String userId) {
        return JSONResult.ok(userService.queryUserById(userId));
    }

}

说明:

  1、@PathVariable 注解,用于参数映射。

  2、Rest需要注意请求的方式,可以看到PUT和POST的URL是相同的,但是后端处理逻辑不同,所以使用的时候千万别搞混了。

3、测试 实际开发测试的过程中,一般使用postman测试相关的接口。当然,也可以用单元测试来实现。这里简单起见,直接用postman来测试刚刚定义的人员操作接口。

创建人员:/user

根据 id 获取人员信息:/user/id

以上,测试了人员的创建和查询接口,其他接口的测试也是一样。

最后

以上,就把Spring Boot 实现Restful API 接口介绍完了。Restful 是一种非常优雅的设计,采用RESTful 设计API之后 /user/api一个URL地址解决,前端一看就能明白。

这个系列课程的完整源码,也会提供给大家。大家私信我(架构师精进),回复:springboot源码。获取这个系列课程的完整源码。

本文分享自微信公众号 - 洞见互联网(coder-zwz),作者:章为忠

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-10-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring Boot入门系列(十一)如何整合Mybatis,实现增删改查【XML 配置版】

    今天主要讲解Springboot整合Mybatis,并实现最基本的增删改查功能。MyBatis 是现如今最流行的 ORM 框架之一,同时也支持普通的 SQL 查...

    架构师精进
  • Spring Boot入门系列(十八)mybatis 使用注解实现增删改查,无需xml文件!

    之前介绍了Spring Boot 整合mybatis 使用xml配置的方式实现增删改查,还介绍了自定义mapper 实现复杂多表关联查询。虽然目前 mybati...

    架构师精进
  • 从零开始实现简单的webapi框架【Golang 入门系列十一】

    之前,已经讲过很多Golang的东西,比如基础语法,mysql的使用,redis的使用等等,感兴趣的可以看看以前的文章,https://www.cnblogs....

    架构师精进
  • Java Web之SpringMVC 进行数据回显

    基本介绍 数据回显:模型数据导向视图(模型数据 ---> Controller ---> 视图) 说明:SpringMVC在调用方法前会创建一个隐含的模型对象...

    YungFan
  • 如何优雅地实现分页查询

    分页功能是很常见的功能,特别是当数据量越来越大的时候,分页查询是必不可少的。实现分页功能有很多种方式,如果使用的ORM框架是mybatis的话,有开源的分页插件...

    黄泽杰
  • 基于jsp+servlet图书管理系统之后台用户信息修改操作

    上一篇的博客写的是查询操作,且附有源码和数据库,这篇博客写的是修改操作,附有从头至尾写的代码(详细的注释)和数据库!  此次修改操作的源码和数据库:http:...

    别先生
  • @ModelAttribute注解的详解

    被该注解定义的方法,会在该方法所在的controller的任何目标方法执行之前执行

    用户2409797
  • Yii框架实现对数据库的CURD操作示例

    本文实例讲述了Yii框架实现对数据库的CURD操作。分享给大家供大家参考,具体如下:

    砸漏
  • NodeJS使用mssql连接SQLServer出现"Incorrect syntax near the keyword \'user\'."

    最近使用NodeJS的mssql模块连接SQLServer数据库出现了"Incorrect syntax near the keyword ‘user’."的错...

    ccf19881030
  • python flask web 博客实例 登录模块 1

    flask-login werkzeug itsdangerous flask-mail flask-bootstrap flask-wtf

    用户5760343

扫码关注云+社区

领取腾讯云代金券