Spring Boot中前后端传递数据方式

4 篇文章 0 订阅
1 篇文章 0 订阅

Spring Boot中前后端传递数据方式

postman作为客户端

 

目前前后端分离开发中用到的最流行的的参数格式是application/x-www-form-urlencoded和application/json。每一种方式都有严格的参数传递格式,如果前后端参数格式传递的不一致,就会出现访问接口异常或者接口接收到的参数为null的情况

HTTP请求方法有GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT。

最常用的GET和POST,这两种方法在Spring中有下面几个注解可以指定

@RequestMapper(value="value")//默认是GET方式
@RequestMapping(value="value", method=RequestMethod.POST)

//下面两个是@RequestMapping和GET/POST的组合注解
@GetMapping("value")
@PostMapping("value")

GET

  • 参数为基本数据类型,前端指定Content-Type为application/x-www-form-urlencoded。
@RequestMapping(value = "/login-get", method = RequestMethod.GET)
public String login(String username, String password){
    return username + ":" + password;
}

     postman中访问及返回

 

    接口中的参数可以使用@RequestParam修饰,也可以使用@PathVariable("username")修饰。

 

  • 参数为引用对象类型,参数不加@RequestBody修饰,前端指定Content-Type为application/x-www-form-urlencoded。
@RequestMapping(value = "/login-get-dto", method = RequestMethod.GET)
public String loginGetDto(LoginDto loginDto){
    return loginDto.toString();
}

    postman中访问及返回

  • 参数为引用对象类型,加@RequestBody修饰,这种情况下,就不能使用上面的参数形式,需要设置Content-Type为application/json。
@RequestMapping(value = "/login-get-dto-rb", method = RequestMethod.GET)
public String loginGetDtoRb(@RequestBody LoginDto loginDto){
    return loginDto.toString();
}

    在postman中使用json的方式,放问及返回如下

 

POST

  • 参数为基本类型数据,前端指定Content-Type为application/x-www-form-urlencoded。
@RequestMapping(value = "/login-post", method = RequestMethod.POST)
public String loginPost(String username, String password){
    return username + ":" + password;
}

    postman中访问及返回如下

  • 参数为引用类型对象,不用@RquestBody修饰,前端指定Content-Type为application/x-www-form-urlencoded。
@RequestMapping(value = "/login-post-dto", method = RequestMethod.POST)
public String loginPostDto(LoginDto loginDto){
    return loginDto.toString();
}

    postman中请求及返回

  • 参数为引用类型对象,@RquestBody修饰,前端传参需要设置Content-Type为application/json
@RequestMapping(value = "/login-post-dto-rb", method = RequestMethod.POST)
public String loginPostDtoRb(@RequestBody LoginDto loginDto){
    return loginDto.toString();
}

    postman中请求及返回

 

文件上传

对于GET和POST方法都一样,前端传参需要设置Content-Type为form-data

@RequestMapping(value = "/upload")
public String upload(MultipartFile file){
    return file.getOriginalFilename();
}

    postman中访问

 

文件和实体同时上传

使用Post传参,设置Content-Type为 multipart/form-data

   @PostMapping("/upload")
    public String upload(MultipartFile file, LoginDto loginDto){
        logger.info("/session,loginDto={}", loginDto);
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("code", "0");
        jsonObject.put("msg", "成功");
        jsonObject.put("file", file.getOriginalFilename());
        jsonObject.put("loginDto", loginDto);
        return jsonObject.toString();
    }

postman中访问

以上是笔者目前使用到的前后端参数传递方式,如有遗漏,欢迎大家补充

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值