Flutter的dio包如何拼接BaseURL、接口路径与apikey参数?
Dio 请求URL拼接规则说明
你给出的示例场景下,Dio的拼接过程分为两个核心步骤:
步骤1:BaseURL与请求相对路径拼接
Dio遵循标准URI resolve 规则处理路径拼接,对应你的参数:
- 配置的BaseURL为
https://newsapi.org/,末尾自带/后缀 - 传入的请求path为
v2/top-headlines?country=us,开头不带/前缀,属于根路径下的相对路径
此时Dio会直接将相对路径拼接在BaseURL之后,得到中间地址:https://newsapi.org/v2/top-headlines?country=us
补充特殊情况:如果请求path开头带
/,Dio会直接替换BaseURL的整个路径段,忽略BaseURL原本的子路径配置。
步骤2:查询参数合并
你提到的apikey(你给出的参数里apkikey为拼写笔误)属于Dio实例配置的全局公共查询参数,Dio合并参数的规则为:
- 优先保留请求path自带的查询参数(你示例中的
country=us) - 再将所有公共查询参数按key追加到参数列表末尾,不同参数之间用
&连接
如果出现公共参数和path自带参数同名的情况,后追加的公共参数会覆盖path中同名参数的取值。
按照这个规则追加apikey参数后,就得到你给出的最终完整URL:https://newsapi.org/v2/top-headlines?country=us&apikey=256c198308134b578e338737a895
内容的提问来源于stack exchange,提问作者Abhay Varma
相关产品推荐
相关产品推荐

