关于前后端传参的几种方式

有些后端的小伙伴可能会因为接不到参数而苦恼,在方法运行的时候会造成空指针等异常,整理了一下集中接参的方式,废话不多说,直接上代码。

将参数放在URL路径上或者表单方式进行传参

接参方式1:将参数放在URL路径上或者表单方式进行传参
/**
     * 接参方式1:将参数放在URL路径上或者表单方式进行传参
     * 调用示例:http://localhost:8081/demo/requestStyle/test1?userName=张三&age=18
     *
     * @param userName 姓名
     * @param age      年龄
     *                 <p>
     *                 备注:参数可不传
     */
    @RequestMapping("test1")
    public String requestTest1(String userName, Integer age,
                               HttpServletRequest request,
                               HttpServletResponse response) throws ServletException, IOException {
     
        System.out.println("userName:" + userName + ",age:" + age);
        return userName;
    }
  接参方式2:通过@RequestParam进行参数名、是否必传设置
/**
     * 接参方式2:将参数放在URL路径上或者表单方式进行传参,通过@RequestParam进行参数名、是否必传设置
     * 调用示例:http://localhost:8081/demo/requestStyle/test2?userName=刘威东
     *
     * @param userName 姓名
     * @param age      年龄
     *                 <p>
     *                 备注:@RequestParam用于给参数起别名、设置默认值,并且可设置参数是否是必传,默认为必传,否则请求报400
     * @RequestParam(value = "userName", required = false, defaultValue = "World")
     */
    @RequestMapping("test2")
    public String requestTest2(@RequestParam String userName,
                               @RequestParam(value = "age", required = false) Integer age1,
                               String age) {
        System.out.println("userName:" + userName + ",age1:" + age1 + "age" + age);
        return userName;
    }
接参方式3:使用Map进行接参并标注@RequestParam注解
/**
     * 接参方式4:将参数放在URL路径上或者表单方式进行传参,使用Map进行接参并标注@RequestParam注解
     * 调用示例:http://localhost:8081/demo/requestStyle/test3?userName=张三&age=18&address=北京市海淀区
     *
     * @param paramMap 接参map
     *                 <p>
     *                 备注:参数可不传
     */
    @RequestMapping("test3")
    public String requestTest3(@RequestParam Map<String, Object> paramMap) {
        System.out.println(JSON.toJSONString(paramMap));
        return JSON.toJSONString(paramMap);
    }
接参方式4:使用对象进行接参
/**
     * 接参方式4:将参数放在URL路径上或者表单方式进行传参,使用对象进行接参
     * 调用示例:http://localhost:8081/demo/requestStyle/test4?userName=张三&age=18&address.city=北京市海淀区&address.street=北四环西路
     *
     * @param user 接参对象
     *             <p>
     *             备注:参数可不传
     */
    @RequestMapping("test4")
    public String requestTest4(User user) {
        System.out.println(JSON.toJSONString(user));
        return JSON.toJSONString(user);
    }

将参数放在请求体以JSON格式进行传参

接参方式5:使用Map进行接参并标注@RequestBody注解
/**
     * 接参方式5:将参数放在请求体以JSON格式进行传参,使用Map进行接参并标注@RequestBody注解
     * 调用示例:http://localhost:8081/demo/requestStyle/test5
     * {"userName":"张三","age":18}
     *
     * @param paramMap 备注:
     *                 1、发起post请求,后端RequestBody方式接参(postman 在Body raw 最右边选JSON)
     *                 2、@RequestBody用于post请求请求体json格式接参,并将其转换成对应的数据类型。不能用于get请求
     */
    @RequestMapping("test5")
    public Object requestTest5(@RequestBody Map<String, Object> paramMap) {
        System.out.println(JSON.toJSONString(paramMap));
        return paramMap;
    }
接参方式6:使用对象进行接参并标注@RequestBody注解
/**
     * 接参方式6:将参数放在请求体以JSON格式进行传参,使用对象进行接参并标注@RequestBody注解
     * 调用示例:http://localhost:8081/demo/requestStyle/test6
     * {"userName":"张三","age":18}
     *
     * @param user 接参对象
     */
    @RequestMapping("test6")
    public Object requestTest6(@RequestBody User user) {
        System.out.println(JSON.toJSONString(user));
        return user;
    }
接参方式7:使用List<对象>进行接参并标注@RequestBody注解
 /**
     * 接参方式7:将参数放在请求体以JSON格式进行传参,使用List<对象>进行接参并标注@RequestBody注解
     * 调用示例:http://localhost:8081/demo/requestStyle/test7
     * [
     * { "userName":"张三","age":18},
     * { "userName":"李四","age":22}
     * ]
     *
     * @param users 接参对象集合
     */
    @PostMapping("test7")
    public Object requestTest7(@RequestBody List<User> users) {
        System.out.println(JSON.toJSONString(users));
        return users;
    }
接参方式8:使用Map<key,对象>进行接参并标注@RequestBody注解
/**
     * 接参方式8:将参数放在请求体以JSON格式进行传参,使用Map<key,对象>进行接参并标注@RequestBody注解
     * 调用方式:http://localhost:8081/demo/requestStyle/test8
     * {
     *  "1":{ "userName":"张三","age":18},
     *  "2":{ "userName":"李四","age":22}
     * }
     *
     * @param userMap 接参对象Map
     */
    @PostMapping("test8")
    public Object requestTest8(@RequestBody Map<String, User> userMap) {
        System.out.println(JSON.toJSONString(userMap));
        return userMap;
    }

将参数以逗号分隔字符串进行传递,后端用List进行接收

 /**
     * 接参方式9:将参数以逗号分隔字符串进行传递,后端用List进行接收
     * 调用示例:http://localhost:8081/demo/requestStyle/test9?ids=1,2,3,4
     *
     * @param ids id字符串
     */
    @RequestMapping("test9")
    public String requestTest9(@RequestParam List<String> ids) {
        log.debug("ids:{}", JSON.toJSON(ids));
        return JSON.toJSONString(ids);
    }

通过HttpServletRequest进行参数接收获取

/**
     * 接参方式10:通过HttpServletRequest进行参数接收获取
     * 调用示例:http://localhost:8081/demo/requestStyle/test10?userName=zs&&age=18
     *
     * @param request
     */
    @RequestMapping("test10")
    public String test10(HttpServletRequest request) {
        String userName = request.getParameter("userName");
        String age = request.getParameter("age");
        System.out.println("userName:" + userName);
        System.out.println("age:" + age);
        return userName;
    }

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值