zoukankan      html  css  js  c++  java
  • POST/GET请求中RequestBody和RequestParam的应用场景

    POST请求时
    @RequestBody --> JSON字符串部分
    @RequestParam --> 请求参数部分
    application/json格局图

     
    图一.png

    form-data、x-www-form-urlencoded格局图
     
    图二.png

    1、从content-type方面总结:
    ① form-data、x-www-form-urlencoded:不可以用@RequestBody;可以用@RequestParam。见postman的格局,这两种方式的时候没有json字符串部分。
    ② application/json:json字符串部分可以用@RequestBody;url中的?后面参数可以用@RequestParam。见postman的格局

    2、从两种注解方式总结:
    @RequestBody

    (

    @RequestParam

    (
    (
    (@RequestParam Object object)
    不管application/json、form-data、x-www-form-urlencoded都不可用
    

    既不是@RequestBody也不是@RequestParam,没有指定参数哪种接收方式

    (Map map)
    (Object object)
    application/json时候:json字符串部分不可用,url中的?后面添加参数不可用。
    因为没有指定,它也不知道到底是用json字符串部分还是?后面添加参数部分,所以干脆都不可以用
    form-data、x-www-form-urlencoded时都不可用,见图二
    
    (HttpServletRequest request)
    application/json不可用
    form-data、x-www-form-urlencoded时可用
    

    GET请求
    @RequestBody

    RequestBody -- Map / Object
    GET请求中不可以使用

    @RequestParam

    (
    (
    (

    当使用GET请求时,通过postman添加?后面的参数,不用在url中自己一个一个拼,点击Params,在下面key-value中输入就自动拼接到url中


     
    GET请求问号后添加参数.png

    举栗子
    上传文件,包含了图中圈出来的两部分

     
    图二.png

    如果这样,没有@RequestParam,那么url?后的参数就拿不到

    如果control中这样接收,本来想formData只接收url?后的参数,结果将{ "retCode": null, "data": true }这部分内容也拿到了,真实意外之喜。字符串这部分内容还可以从request中取到,见下面完整方法。

    完整方法

        /**
         * 导入
         */
        
     
     



    作者:墨色尘埃
    链接:https://www.jianshu.com/p/4981911d5e15

  • 相关阅读:
    vmware ubuntu 异常关机无法连接到网络
    Speed up GCC link
    常用的一些解压命令
    Log4j 漏洞复现
    Test Case Design method Boundary value analysis and Equivalence partitioning
    CCA (Citrix Certified Administrator) exam of “Implementing Citrix XenDesktop 4”
    What is Key Word driven Testing?
    SAP AGS面试小结
    腾讯2013终端实习生一面
    指针的引用
  • 原文地址:https://www.cnblogs.com/panchanggui/p/12172332.html
Copyright © 2011-2022 走看看