V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
rqxiao
V2EX  ›  程序员

请教 springboot 后台接受 urlEncode 这种数据时,如何可以较好的接受参数

  •  
  •   rqxiao · 2020-08-13 17:29:38 +08:00 · 2906 次点击
    这是一个创建于 1564 天前的主题,其中的信息可能已经有所发展或是发生改变。

    http://127.0.0.1:8808/test/t1?name%3Dbob%26id%3Daaaaa%26orderNum%3D2019%26charset%3Dutf-8

    request.getParameterMap()是可以接受到一个大的字符串

    这样是拿不到的(String name, String id)拿到的参数都是 null

    20 条回复    2020-08-14 13:01:00 +08:00
    gotonull
        1
    gotonull  
       2020-08-13 17:50:50 +08:00
    没看懂问的啥意思
    leafre
        2
    leafre  
       2020-08-13 17:56:00 +08:00
    http://127.0.0.1:8808/test/t1?name=bob&id=aaaaa&orderNum=2019&charset=utf-8
    @RequestParam("name")
    rqxiao
        3
    rqxiao  
    OP
       2020-08-13 17:58:17 +08:00
    @gotonull 就是想请问下 一般接受 urlEncode 参数时,后台代码 有没有可以单独接受每个参数的写法

    request.getParameterMap()返回了所有参数拼接的一个字符串
    mgcnrx11
        4
    mgcnrx11  
       2020-08-13 18:03:12 +08:00 via iPhone
    2 楼就是啦
    rqxiao
        5
    rqxiao  
    OP
       2020-08-13 18:17:59 +08:00
    @mgcnrx11 这样也不行啊 回调我方法的时候不会是这样的 http://127.0.0.1:8808/test/t1?name=bob&id=aaaaa&orderNum=2019&charset=utf-8 这种格式的
    rqxiao
        6
    rqxiao  
    OP
       2020-08-13 18:26:57 +08:00
    @leafre
    http://127.0.0.1:8808/test/t1?name%3Dbob%26id%3Daaaaa%26orderNum%3D2019%26charset%3Dutf-8 我用这个试好像还是不行
    leafre
        7
    leafre  
       2020-08-13 18:38:09 +08:00
    @rqxiao 加不加 RequestParam,应该都能取到,urlEncode 跟服务端没关系,奇怪,debug 下看看 request parameter 吧
    heiybb
        8
    heiybb  
       2020-08-13 18:48:17 +08:00
    chendy
        9
    chendy  
       2020-08-13 18:50:00 +08:00
    为什么把 queryString 的&和=都给 encode 了。。。
    heiybb
        10
    heiybb  
       2020-08-13 18:52:08 +08:00
    consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE, MediaType.MULTIPART_FORM_DATA_VALUE}, produces = MediaType.APPLICATION_JSON_VALUE

    mapping 里面加这个好像也可以
    ref: https://blog.knoldus.com/how-to-handle-url-encoded-form-data-in-spring-rest/
    Jackeriss
        11
    Jackeriss  
       2020-08-13 18:55:22 +08:00 via iPhone
    Google 去,别再水帖了
    Kirsk
        12
    Kirsk  
       2020-08-13 19:08:21 +08:00 via Android
    拦截器 百度 修改 request 的 Parameter 参数 类似这样的接口不多就没必要重写了
    siweipancc
        13
    siweipancc  
       2020-08-13 19:16:02 +08:00 via iPhone
    如果你不知道怎么捕获参数,那么看 2l,如果知道还提出这个问题,我当你是有了奇葩的传参需求,建议先胖揍设计接口的人
    cheng6563
        14
    cheng6563  
       2020-08-13 19:17:54 +08:00 via Android
    直接取 URL 分割逗号吧
    maopian
        15
    maopian  
       2020-08-13 19:19:05 +08:00
    让调用接口方的只 encode 参数值
    zliea
        16
    zliea  
       2020-08-13 19:22:18 +08:00 via iPhone
    @RequestParam(“name”)String name
    intmax2147483647
        17
    intmax2147483647  
       2020-08-14 09:46:00 +08:00
    别干程序员了
    rqxiao
        18
    rqxiao  
    OP
       2020-08-14 10:12:57 +08:00
    @intmax2147483647 不是 我就想问下 urlencode 了&和= 您有什么办一个个全取出来
    transwill
        19
    transwill  
       2020-08-14 11:21:10 +08:00
    不行就写一个注解,去获取到 request 去处理,封装成 map 来用。最简单还是把传值的人打一顿
    chocotan
        20
    chocotan  
       2020-08-14 13:01:00 +08:00
    把&和=都 urlencode 了,就相当于整个变成了一个参数名,值是 null
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2804 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 00:05 · PVG 08:05 · LAX 16:05 · JFK 19:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.