• 优雅的处理POST请求URL带参数的情况


    我们在日常开发中,接口定义方式最常见的是 Restful API 或者 RPC,Restful API 基于 HTTP ,提供了几种请求方式,如:

    请求方法一般含义
    GET获取
    POST新增
    PUT更新
    DELETE删除

    GET 请求的参数一般会在 URL 后,例如:

    http://ip:port/query?id=1

    而POST请求一般都在请求体中。但是有些接口的参数比较奇葩,例如POST请求的时候,携带两部分参数,一部分在 body 里面,另一部分需要追加到 URL 后面。
    这种情况下,我们可以直接将参数拼接到 URL 后面,但是总感觉不够优雅???

    如果想优雅处理的话,可以使用 URL.RawQuery

    URL 也是一个结构体(以Golang的url包下的URL 结构体为例)

    type URL struct {
    	Scheme      string
    	Opaque      string    // encoded opaque data
    	User        *Userinfo // username and password information
    	Host        string    // host or host:port
    	Path        string    // path (relative paths may omit leading slash)
    	RawPath     string    // encoded path hint (see EscapedPath method)
    	ForceQuery  bool      // append a query ('?') even if RawQuery is empty
    	RawQuery    string    // encoded query values, without '?'
    	Fragment    string    // fragment for references, without '#'
    	RawFragment string    // encoded fragment hint (see EscapedFragment method)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    RawQuery string // encoded query values, without ‘?’

    以 Golang 为例:

    reqUrl := "https://xxx.xxx.xx.xxx:8009/login"
    param := url.Values{}
    param.Add("sid", sid)
    
    ...
    
    request.URL.RawQuery = param.Encode()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    如何优雅编写测试用例
    【黑马程序员】mysql进阶再进阶篇笔记
    js 轮播图 (原生)
    STM32H7高性能MCU系列 STM32H7A3NGH6 32-bit RISC内核
    Go泛型详解
    《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作
    MFC Windows 程序设计[218]之网络打印机(附源码)
    string类
    Nginx部署Vue前端项目
    二叉树习题总结
  • 原文地址:https://blog.csdn.net/weixin_36908494/article/details/126373063