最近用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。我是极客君,欢迎优秀人才用简历敲门,我真心内推!

最新文章

  1. Linux 中我该如何备份系统
  2. PowerDesigner 常用设置
  3. java学习笔记之数组
  4. The Safe Navigation Operator (&.) in Ruby
  5. UWP学习记录5-设计和UI之控件和模式2
  6. H5中REM中使用的规则
  7. CSS实现背景图尺寸不随浏览器缩放而变化
  8. [IOS8兼容性]IOS8上收不到通知
  9. Docker实践(5)—资源隔离
  10. Pop - Facebook 开源 iOS & OS X 动画库
  11. Properties集合的练习
  12. linux中为什么已经是root用户仍不能执行程序
  13. defer 要放在return之前
  14. placeholder在ie浏览器里不显示的问题解决
  15. 使用Javascript获得网页中通过GET方法提交的参数
  16. storyBoard使用介绍
  17. [基础架构]PeopleSoft都有哪些进程运行在进程服务器上
  18. salesforce零基础学习(七十六)顺序栈的实现以及应用
  19. asp.net 按钮执行前后台方法——前台弹出提示信息,确认后继续执行后台方法,取消则不执行后台方法
  20. Linux 第八天

热门文章

  1. 记不住git命令?试试这个命令浏览网站
  2. (转)Qt添加windows开机自启动
  3. “随手记”开发记录day10
  4. URLDecoder异常解决方法
  5. 华为云的研究成果又双叒叕被MICCAI收录了!
  6. Java单元测试 Junit TestNG之介绍
  7. JS学习第一天
  8. sql 语句(精品)
  9. IOS 如何持久化自定义对象 2014-08-01 01:38
  10. github Repository not found 解决办法