• GET清求 不能传 @RequestBody 吗, (不支持POST请求方法,支持以下GET)


    GET请求中通常不包含@RequestBody注解,这是因为GET请求的参数是通过URL查询字符串(query parameters)传递的,而不是放在请求体(request body)中。

    在Spring MVC等框架中,如果你想从GET请求中获取请求参数,可以使用@RequestParam、@PathVariable等注解来绑定参数:

    例如:

    @GetMapping("/users")
    public User getUser(@RequestParam("id") Long id) {
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4

    而在POST、PUT等请求中,由于它们能够携带请求体,所以可以使用@RequestBody来绑定JSON、XML等形式的请求体数据。例如:

    @PostMapping("/users")
    public User createUser(@RequestBody User user) {
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4

    对象 咋办 啊
    在GET请求中,如果需要传递一个对象的所有属性作为查询参数,通常的做法是将对象的每个属性转换为对应的查询参数键值对。

    例如,假设你有一个User对象:

    public class User {
        private Long id;
        private String name;
        // getters and setters...
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    如果你想通过GET请求获取一个用户,你需要将id和name属性作为查询参数传递:

    @GetMapping("/users")
    public User getUser(@RequestParam("id") Long id, @RequestParam("name") String name) {
        // ...
    }
    
    • 1
    • 2
    • 3
    • 4

    然而,如果你有大量的属性或者希望保持与POST/PUT请求类似的处理方式(即使用JSON格式传递),那么可以考虑以下几种非标准但可行的方法:

    1. 将对象序列化为查询字符串:在发送请求前,客户端自行将对象转换为查询字符串形式。

    2. 使用自定义的HTTP Header或其他非标准的方式来传递JSON数据,然后在服务端解析。但这已经偏离了HTTP GET方法的标准用法,可能带来兼容性和可读性的问题。

    总的来说,在RESTful API设计中,GET请求一般不建议携带复杂的请求体,更适合用于获取资源的操作。对于创建或更新资源这类操作,推荐使用POST、PUT等方法并结合@RequestBody来接收请求体中的对象数据。

  • 相关阅读:
    构建银行人工智能用户画像和自动营销体系
    配置anaconda+安装cuda和cudnn+将cuda和cudnn配置到指定目录+使用cuda命令安装cuda和cudnn
    Python正则表达式(re)
    Android移动应用开发之使用ListView+SQLiteOpenHelper实现商品列表添加删除的界面
    hiveSql 各时段观看直播人数
    c++回调函数详解及实现(lambda)
    克鲁斯卡尔算法(C++)
    代码随想录算法训练营第五十八天丨 动态规划part18
    Android JVM学习(扎实基础版)
    如何求和第K大(小)的子序列
  • 原文地址:https://blog.csdn.net/weixin_48616345/article/details/136724394