@RequestParam和@RequestBody使用上的区别

本文对比了@RequestParam和@RequestBody两个注解的区别。RequestParam适用于GET请求,需要显式指定每个参数;而@RequestBody则用于POST请求,通过传递一个实例对象来简化参数处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

只讲最直接和使用上的区别,深层的差异请移步百度

  1. @RequestParam
    服务器端,需要把每个参数都写出来:
@RequestMapping("/updatestate")
    public String updateUserState(@RequestParam("id")int id,@RequestParam("state")boolean state){
//        修改数据库,并返回修改结果,1表示成功,0表示失败
        int updateFlag = sportUserMapper.updateState(id, state);
        System.out.println(updateFlag);
        return updateFlag+"";
    };

前端请求,只能用get方法,不能用post

let query = { id: id, state: state };
const res = await this.$http.get("updatestate", { params: query });
  1. @RequestBody
    服务器端,需要跟一个实例对象,不用将每个参数都写出来:
    @RequestMapping("/adduser")
    public String addUser(@RequestBody SportUser sportUser){
        int addFlag = sportUserMapper.addNewUser(sportUser.getUsername(),sportUser.getPassword(),sportUser.getEmail(),sportUser.getRole(),sportUser.getState());
//        int addFlag = sportUserMapper.addNewUser("leon111","1234","qqmail","普通用户",true);

        return addFlag+"";

这里的SportUser sportUser是需要创建的一个SportUser实例:

package com.wyh.springbootmybatisdemo.pojo;

public class SportUser {
    //    主键,标识自增
    private int id;
    //    用户名,密码,邮箱,角色
    private String username,password,email,role;
    //    状态
    private boolean state;

    public SportUser() {
    }

    public SportUser(String username, String password, String email, String role, boolean state) {
        this.username = username;
        this.password = password;
        this.email = email;
        this.role = role;
        this.state = state;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getRole() {
        return role;
    }

    public void setRole(String role) {
        this.role = role;
    }

    public boolean getState() {
        return state;
    }

    public void setState(boolean state) {
        this.state = state;
    }

    @Override
    public String toString() {
        return "SportUser{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", email='" + email + '\'' +
                ", role='" + role + '\'' +
                ", state=" + state +
                '}';
    }
}

前端请求,只能用post,不能用get

let query = { id: id, state: state };
const res = await this.$http.post("adduser", query);
  1. 总结

@RequestParam跟每个参数,用get
@RequestBody跟一个实例对象,用post
另外需要注意,
get的参数是(“请求地址”,{params:请求集合)
post的参数是(“请求地址”,请求集合)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值