java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot Controller接收参数的方式

SpringBoot Controller接收参数的几种常用方式

作者:猴猴小扣

这篇文章主要介绍了SpringBoot Controller接收参数的几种常用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot Controller接收参数的常用方式

在Controller中加入@RestController,效果等于@Controller + @ResponseBody

1 请求路径参数

直接把表单里面的参数写进 Controller 相应方法的形参中去,这个获取参数的方法适合get提交,而不适合post提交。

@PathVariable获取(这个当然不分get和post了,是url提取嘛)

    @RequestMapping("/userInfo/{id}")
    public String userInfo(@PathVariable String id) {
        System.out.println(id);
        return id;
    }

http://localhost:8080/userInfo/142857

@RequestParam获取查询参数,如url?id=1428571

    @RequestMapping("/userInfo")
    public String userInfo(@RequestParam(name = "id") String id) {
        System.out.println(id);
        return id;
    }

http://localhost:8080/userInfo?id=12345671

2 实体参数

通过建立一个bean来获取参数:

package com.example.helloworld.model;
public class User {
    private String id;
    private String name;
    private Notebook notebook;
    User(String id, String name) {
        this.id  = id;
        this.name = name;
        this.notebook = new Notebook();
    }
    public String getName() {
        return name;
    }
}
@RequestMapping("/userInfo")
    public String userInfo(User user) {
        System.out.println(user.getName());
        return user.getName();
    }

http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00

3 日期参数

http://localhost:8080/problemBook?id=142857&time=2022-01-01 00:00:00

@RequestMapping("/problemBook")
    public String problemBook(String id, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") LocalDateTime time) {
        System.out.println(id);
        System.out.println(time);
        return "OK";
    }

但“yyyy-MM-dd”就识别有问题……

4 Json Body参数

通常用于Post请求。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UC3GsHzo-1685868352014)(【SpringBoot】SpringBoot-Controller接收参数的常用方式/image-20230604162017983.png)]

使用RequestBody注解。

@PostMapping("/finishProblem")
    public String finishProblem(@RequestBody User user) {
        System.out.println(user.getName());
        return "OK";
    }

也可以使用一个map接收:

    @PostMapping("/finishProblem")
    public String finishProblem(@RequestBody Map<String, String> params) {
        System.out.println(params.get("uid"));
        System.out.println(params.get("problemId"));
        return "OK";
    }

5 返回结果

@ResponseBody用于Controller类或者方法上,将方法返回值直接响应,若返回值类型是实体对象或者集合,将转为json格式相应。

为了有统一的返回方式,定义统一响应结果Result

package com.example.helloworld.controller;
/**
 * code response状态码
 * obj 返回给前端的数据
 * message 附加信息,说明具体情况
 */
public class Result {
    public int code;
    public String message;
    public Object data;
    public Result(int code, String message, Object data) {
        this.code = code;
        this.message = message;
        this.data = data;
    }
    public static Result success(Object data) {
        return new Result(200, "success", data);
    }
    public static Result success() {
        return new Result(200, "success", null);
    }
    public static Result error(String message) {
        return new Result(404, message, null);
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文