• 基本用法

    • @GetMapping与@PostMapping不指定参数时就是指直接使用到controller一级的url就行
    • @GetMapping与@PathVariable对应,前者{}中的字符串和后者修饰的变量名对应
    • @PostMapping与@RequestBody(仅请求参数时json格式时??)、@RequestParam??对应,Spring会自动把POST的Request Body部分的JSON转换成方法声明的类。如果转换失败会返回4xx错误,表示请求参数有问题。
    • @PutMapping可以同时使用@PathVariable和@RequestBody
    • @DeleteMapping可以同时使用@PathVariable和@RequestParam,还可以使用HttpServletRequest(Spring Boot会自动帮忙传进来)
      • @RequestParam既可以是url后面?跟的参数,也可以是request form里的key-value参数
      • @RequestParam有一个required参数,默认为true,如果设为false,就是说这个参数可以不传
  • 上传文件
    • 首先要设置consumes为multipart/form-data(上传文件肯定是这个)

      • @PostMapping(value="/files", consumes=MediaType.MULTIPART_FORM_DATA_VALUE)
    • 在方法中写@RequestParam("file") MultipartFile file参数,然后在方法中就可以直接使用MultipartFile的流保存文件了,file为调用者上传文件时的request form中指定的名字(name)
      • public Map<String, Object> uploadFile(@RequestParam("file") MultipartFile file)
      • MultipartFile可以直接getInputStream()获取输入流
      • curl可以使用-F参数指定文件上传
  • 返回文件、图片等二进制文件/流
    • 首先要设置produces为MediaType.IMAGE_JPEG_VALUE等参数

      • @GetMapping(value="/{id}/icon", produces=MediaType.IMAGE_JPEG_VALUE)
    • 方法返回时返回一个字节数组,注解会自动转换为图片等格式(其实就是设置http response的媒体类型、长度等??)
  • 从请求中获取信息的方法
    • 从URL中获取其路径的一部分

      • 首先需要在RequestMapping做映射,之后在方法中可以通过注解使用映射的变量

        • @GetMapping("/{id}") public TvSeries getOne(@PathVariable("id") Integer id){}
      • 可以写多个
        • @PutMapping("/{id}/characters/{cId}")
      • 还可以使用正则表达式限制类型(不符合要求会返回4xx的错误信息,标识请求参数有问题)
        • @PutMapping("/{id:\\d+}")
    • 从POST请求中获取传递来的JSON
      • 给参数前增加@RequestBody注解,Spring会自动把POST的Request Body部分的JSON转换成方法声明的类。如果转换失败会返回4xx错误,表示请求参数有问题。
      • public Object updateOne(@RequestBody TvSeries tvSerives)
    • 从文件上传中获取文件流内容
      • 参考前文

Spring Boot - Restful API的更多相关文章

  1. 使用 JSONDoc 记录 Spring Boot RESTful API

    这个博文可以分为两部分:第一部分我将编写一个Spring Boot RESTful API,第二部分将介绍如何使用JSONDoc来记录创建的API.做这两个部分最多需要15分钟,因为使用Spring ...

  2. spring boot RESTFul API拦截 以及Filter和interceptor 、Aspect区别

    今天学习一下RESTFul api拦截 大概有三种方式 一.通过Filter这个大家很熟悉了吧,这是java规范的一个过滤器,他会拦截请求.在springboot中一般有两种配置方式. 这种过滤器拦截 ...

  3. Spring Boot & Restful API 构建实战!

    作者:liuxiaopeng https://www.cnblogs.com/paddix/p/8215245.html 在现在的开发流程中,为了最大程度实现前后端的分离,通常后端接口只提供数据接口, ...

  4. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】03、创建RESTful API,并统一处理返回值

    本节应用Spring对RESTful的支持,使用了如@RestController等注解实现RESTful控制器. 如果对Spring中的RESTful不太明白,请查看相关书籍 1.创建一个数据对象, ...

  5. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】06、Mybatis+SQLServer集成

    1.增加POM依赖 注意pagehelper插件,我重写过,可以到我的这篇文章了解https://www.cnblogs.com/LiveYourLife/p/9176934.html <dep ...

  6. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】05、Shiro集成

    1.POM文件中加入Shiro和fastJSON依赖 <dependency> <groupId>org.apache.shiro</groupId> <ar ...

  7. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】04、统一处理异常

    本节讨论如何使用Spring的异常处理机制,当我们程序出现错误时,以相同的一种格式,把错误信息返回给客户端 1.创建一些自定义异常 public class TipsException extends ...

  8. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】01、环境准备

    开发环境 windows+STS(一个针对Spring优化的Eclipse版本)+Maven+SQLServer 环境部署 1.安装SQLServer(使用版本2008R2) 自行安装,此处略过 2. ...

  9. 【从0到1,搭建Spring Boot+RESTful API+Shiro+Mybatis+SQLServer权限系统】02、创建新的SpringBoot项目

    1.创建项目 得到项目架构 2.测试项目Web功能 默认端口为8080,运行后,输入localhost:8080/index即可访问到网页 到这里,项目构建成功!

随机推荐

  1. Python列表的生成

    要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3, 4, 5, ...

  2. git命令用法

    git svn  说明 git pull svn update   git add 要提交的文件名 svn add   git rm svn rm,del   git commit -m '备注一下提 ...

  3. 认识Excel并创建一个excel(网址:http://poi.apache.org/)

    需要导入的jar包: package com.huawei.excel; import java.io.FileOutputStream; import org.apache.poi.hssf.use ...

  4. Linux实战教学笔记32:企业级Memcached服务应用实践

    一, Memcached介绍 1.1 Memcached与常见同类软件对比 (1)Memcached是什么? Memcached是一个开源的,支持高性能,高并发的分布式内存缓存系统,由C语言编写,总共 ...

  5. 80. Remove Duplicates from Sorted Array II (Array)

    Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For examp ...

  6. 最长的相同节点值路径 · Longest Univalue Path

    [抄题]: Given a binary tree, find the length of the longest path where each node in the path has the s ...

  7. 监控web接口和添加触发器

    1: 以监控百度接口为例子: www.baidu.com1: 打开 2: 过滤ss0.bdstatic.com 3: 选择两个url进行监控 https://ss0.bdstatic.com/5aV1 ...

  8. jdk8中LocalDateTime,LocalDate,LocalTime等日期时间类

    package com.zy.time; import org.junit.Test; import java.time.*; import java.time.format.DateTimeForm ...

  9. redis 面试题2

    使用过Redis分布式锁么,它是什么回事? 先拿setnx来争抢锁,抢到之后,再用expire给锁加一个过期时间防止锁忘记了释放. 这时候对方会告诉你说你回答得不错,然后接着问如果在setnx之后执行 ...

  10. scanf是怎么从标准输入读取数据的

    scanf是从标准输入读取数据的 假设现在标准输入中的数据是123456 int a; 而我scanf("%d",&a); 会把123456转化为数字然后存入到a中. 如果 ...