码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 优雅的处理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主从复制和读写分离(三、搭建负载均衡)
    多厂商的实现不同vlan间通信
    GD32F103 硬件 IIC
    八股文之jdk源码分析
    Matlab实验一
    docker小技能:容器IP和宿主机IP一致( Nacos服务注册ip为内网ip,导致Fegin无法根据服务名访问 )
    【shell】pis_monitor.sh
    注解与反射_反射
    C#反射中的GetConstructor与GetConstructors构造函数参数的获取
    vue3 知识点(二)
  • 原文地址:https://blog.csdn.net/weixin_36908494/article/details/126373063
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号