zoukankan      html  css  js  c++  java
  • Postman发送POST请求到Spring Boot的正确姿势

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

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

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class MyUser {
        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。我是极客君,欢迎优秀人才用简历敲门,我真心内推!

  • 相关阅读:
    mac os programming
    Rejecting Good Engineers?
    Do Undergrads in MIT Struggle to Obtain Good Grades?
    Go to industry?
    LaTex Tricks
    Convert jupyter notebooks to python files
    How to get gradients with respect to the inputs in pytorch
    Uninstall cuda 9.1 and install cuda 8.0
    How to edit codes on the server which runs jupyter notebook using your pc's bwroser
    Leetcode No.94 Binary Tree Inorder Traversal二叉树中序遍历(c++实现)
  • 原文地址:https://www.cnblogs.com/freephp/p/13619908.html
Copyright © 2011-2022 走看看