最近用Spring Boot搭建了一些restful api,写起来真的很爽。但是当用Postman测试一些POST请求的接口的时候却遇到一些问题,上网冲浪查了一堆博客资料,发现都讲得不清不楚,于是记录下来希望也能让同道少走弯路。

假设有一个POST请求的接口是接受一个对象而不是单个参数,如注册接口,需要传递一个LoginUser对象,该对象的结构如下:

@Data
@AllArgsConstructor
@NoArgsConstructor
public class LoginUser {
private String username;
private String password;
}

我们的Controller文件中接口是这样的:

public class UserController {
@Autowired
UserService userService;
@Autowired
TokenService tokenService; @PostMapping("/register")
public JsonResultObject register(@RequestBody MyUser user) {
// other logic codes, just skip it
return userService.register(user);
}
}

在login方法上传入的是一个对象LoginUser,需要用到@RequestBody注解。一旦使用了这个注解,Postman的请求头里面要设置成"Content-Type:application/json"。否则会出现图1的报错,然而光是这样设置还是不够的。

​ 图1 unspported Media Type

如果在Postman中使用form-data或者x-www-form-urlencoded方式,如图2所示,则会有JSON parse error。

​ 图2 json parse报错

千万别以为自己使用的第三方json包出问题了,网上还有人说是因为使用的jackson的版本和Spring Boot版本不匹配,其实真不见得是这个问题。正确的做法是,使用raw方式填写json字符串即可,如图3所示:



图3 成功请求

终于成功注册了一个用户,喜大普奔啊!

另外,如果是传递单个参数,可以使用@RequestParam,那么Postman就可以使用form-data方式传递了,这很简单。

经过这个事情,让我想到了几年前还在写NodeJS项目的岁月,在和腾讯团队和yh团队对接接口的时候,貌似传递post参数也是需要用raw方式传递,否则那边处理不了,腾讯微信后台是用的C++,而yh是用的Java(估计是Spring)。

============= 华丽分隔符 ========================

我司正在高薪招聘各种开发人才,北京、广州 Java高级研发、php高级管理岗位(全国范围,不限制)、测试、运维高级岗位。请在看机会的同学与我私信联系,或者加我微信号沟通:UUUUUTW。我是极客君,欢迎优秀人才用简历敲门,我真心内推!

Postman发送POST请求到Spring Boot的正确姿势的更多相关文章

  1. postman发送json请求,使用案例

    介绍:  postman是一个很好的http模拟器,,可以发送get.post.put等各种请求,是测试服务接口相当好的工具. postman发送json请求,使用案例 发送json的具体步骤: 1. ...

  2. postman发送post请求,报405 Method Not Allowed

    postman发送post请求,报405 Method Not Allowed: 亲测有效的方案一: 检查请求header是否缺少必要信息.如果不清可以把所有的头部信息全部粘贴到header中,尝试是 ...

  3. 【轮询】【ajax】【js】【spring boot】ajax超时请求:前端轮询处理超时请求解决方案 + spring boot服务设置接口超时时间的设置

    场景描述: ajax设置timeout在本机测试有效,但是在生产环境等外网环境无效的问题 1.ajax的timeout属性设置 前端请求超时事件[网络连接不稳定时候,就无效了] var data = ...

  4. Postman发送GET请求带中文

    当使用Postman进行GET请求,并且请求参数里携带中文得时候,会请求失败 这时,需要对GET请求参数携带的中文进行编码即可请求成功

  5. spring boot 服务 正确关闭方式

    引言 Spring Boot,作为Spring框架对“约定优先于配置(Convention Over Configuration)”理念的最佳实践的产物,它能帮助我们很快捷的创建出独立运行.产品级别的 ...

  6. Spring Boot程序正确停止的姿势

    Spring Boot提供了2种优雅关闭进程的方式: 基于管理端口关闭进程 基于系统服务方式关闭进程 基于管理端口关闭进程 基于管理端口方式实现进程关闭实际上是模块spring-boot-actuat ...

  7. Postman 发送http请求工具

    http://donglegend.com/2016/10/28/Postman/ Postman 发现一款发送Web API & HTTP 请求的工具,没错,就是Postman.推荐给大家, ...

  8. postman发送json请求

    简介: postman是一个很好的http模拟器,在测试rest服务时是很好用的工具,可以发送get.post.put等各种请求. 发送json的具体步骤: 1.选择post请求方式,同时将heade ...

  9. postman --发送json请求

    转自: http://blog.csdn.net/wangjun5159/article/details/47781301 简介: postman是一个很好的http模拟器,在测试rest服务时是很好 ...

随机推荐

  1. ios 生成字母加数字的随机数

    文章来自:http://blog.csdn.net/baidu_25743639/article/details/73801700 近期项目第三方登录之后默认创建账号和密码,就用随机数生产,这里只需要 ...

  2. Python-关于正则表达式的总结

    什么是正则表达式? 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),用于字符串的 匹配 和 提取 等操作.正则表达式在所有编程语言中都是通用的. 很多人 ...

  3. Nginx配置SSL证书,提高网络安全性

    首先区别Http与Https HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高 ...

  4. ReentrantLock与synchronized 源码解析

    一.概念及执行原理   在 JDK 1.5 之前共享对象的协调机制只有 synchronized 和 volatile,在 JDK 1.5 中增加了新的机制 ReentrantLock,该机制的诞生并 ...

  5. .NET或.NET Core Web APi基于tus协议实现断点续传

    前言 前两天我采用技巧式方案基本实现大文件分片上传,这里只是重点在于个人思路和亲身实践,若在实际生产环境要求比较高的话肯定不行,仍存在一些问题需要深入处理,本文继续在之前基础上给出基于tus协议的轮子 ...

  6. Broken 2020: 1 靶机

    这个靶机的作者脑洞太大了 扫描下端口,就普通的ssh http服务 扫描下目录,发现了一个2个cms目录 进来cms发现是个安装界面,但是后面安装失败,无意返回cms发现出现了一个flag 进入/cm ...

  7. Vue在v-for中给css传递一个数组参数

    需求就是将很多个数据,以进度条的形式展示在页面上,形成一个可视化. 接下来是html代码 <!DOCTYPE html> <html> <head> <tit ...

  8. 单元测试新方法:用setUp方法 @Before注释

    public class CentralizedPUDMatchServicePacTest { PacMatchService pacMatchService; @Before public voi ...

  9. 【HAOI2015】树上染色 - 树形 DP

    题目描述 有一棵点数为 N 的树,树边有边权.给你一个在 0~ N 之内的正整数 K ,你要在这棵树中选择 K个点,将其染成黑色,并将其他 的N-K个点染成白色 . 将所有点染色后,你会获得黑点两两之 ...

  10. 微信小程序setData局部刷新列表

    利用setData局部刷新列表 当列表管理加载到第几页时,这个list的数据有十几条的,如果重新setData的话就要重新刷新和渲染列表, 这是个比较麻烦的事,当数据量大时,就会造成白屏, 这时就要局 ...