Laravel 7.x Http Client如何将嵌套数组转为指定格式请求URL
解决Laravel 7.x Http Client发送嵌套参数GET请求的格式问题
嗨,我来帮你搞定这个问题!
你遇到的核心问题是:Laravel的Http Client默认会把嵌套数组参数解析成variables[color]=red&variables[size]=large这种“数组展开式”的URL参数,但你的API要求variables是一个JSON字符串作为单个参数值,所以直接传嵌套数组会不符合API的预期格式。
解决方案:手动将嵌套参数序列化为JSON字符串
你只需要先把variables数组转成JSON字符串,再放到请求参数数组里,Laravel会自动帮你完成URL编码,生成符合要求的请求URL。
具体代码如下:
// 先处理嵌套参数,转成JSON字符串 $variables = json_encode([ 'color' => 'red', 'size' => 'large' ]); // 构建最终的请求参数数组 $params = [ 'type' => 'books', 'variables' => $variables ]; // 发送GET请求 $response = Http::get('http://example.com', $params);
为什么这样可行?
当你把variables设为JSON字符串后,Laravel的Http Client会把它当作普通的字符串参数处理,自动进行URL编码,最终生成的URL就是你期望的格式:http://example.com/?type=books&variables=%7B%22color%22%3A%22red%22%2C%22size%22%3A%22large%22%7D
和你手动拼接的效果完全一致,API就能正确识别参数了。
如果后续有更多嵌套参数需要处理,都可以用同样的方式:先把需要作为JSON传递的数组用json_encode()转成字符串,再加入参数数组即可。
内容的提问来源于stack exchange,提问作者Saman
相关产品推荐
相关产品推荐

