【问题标题】:Spring Multiple RequestParams vs RequestBody, which is Preferred?Spring Multiple RequestParams vs RequestBody,哪个是首选?
【发布时间】:2020-08-10 21:58:14
【问题描述】:

我是 Spring Rest 的新手。在进行 POST 时,我们有 2 个选项 @RequestBody 或 @RequestParams

我的查询不是它们。我很清楚它们是什么。

通常我们将@RequestParams 用于form-urlencoded,@RequestBody 用于JSON/XML。

我有一个场景如下:

class EmployeeDTO {
    long id;
    String name;
    String age;
    String address;
    String salary;

    //Getters and Setters
}

对于 POST,我可以直接使用 as void doSomething(@RequestBody EmployeeDTO){ }

我也可以做同样的事情但使用 5 个 RequestParams

void doSomething(@RequestParam(id) long id,@RequestParam(name)String name,@RequestParam(age)String age,@RequestParam(address)String address,@RequestParam(salary)Stringsalary){ }

我见过一些像 Stripe 这样的好网站,它们在 REST Api 中只关注 @RequestParam。

我实际上明白了我们使用 RequestBody 来处理复杂的输入,@RequestParam 来处理简单的参数。

所以,我的实际查询是:在上面的类中,只有 5 个参数,我认为可以使用 @RequestParam,但是如果有 7 或 10 个输入参数,那么应该我选择了 RequestBody 还是(7 或 10)REquestParam?

编辑:

class Orders {
   String id;
   Employee employee;

}

【问题讨论】:

    标签: spring spring-boot rest spring-mvc spring-data-jpa


    【解决方案1】:

    这并不是基于“我必须在服务器上推送的数据数量”的选择。

    从历史上看,一般来说,查询字符串的使用,顾名思义,就是查询数据。因此,当您想“拉”数据HTTP GET

    时,请求参数将是首选

    如果目标是在服务器上“推送”数据(例如“创建员工”),您应该更喜欢在请求正文中发送此数据。

    此外,查询字符串是 URL 的一部分,位于客户端和 API 之间的每个人都可以读取它,因此我们不应将密码等敏感数据放入查询字符串中。

    您可以使用 mime 类型 application/x-www-form-urlencoded 在您的正文中模拟查询字符串的格式。这里请求正文使用与查询字符串相同的格式。

    parameter=value&parameter2=another
    

    【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2014-02-17
    • 2020-06-04
    • 2010-10-03
    相关资源
    最近更新 更多