【问题标题】:Trying to get multidimensional array to a query string试图将多维数组转换为查询字符串
【发布时间】:2020-03-30 11:28:36
【问题描述】:

我正在尝试为 API 请求的查询字符串构建多维数组。

    $key = env('GRAPHHOPPER_API_KEY', null);
    $baseUrl = "https://graphhopper.com/api/1/route";

    $formData = [
        'point' => [request()->input('point1'), request()->input('point2')],
        'key' => $key,
    ];
    $queryStr = http_build_query($formData);
    $url = $baseUrl.'?'.$queryStr;

    try {
        $client = new \GuzzleHttp\Client();
        $response = $client->request('GET', $url, [
            \GuzzleHttp\RequestOptions::JSON => $formData
        ]);
        $result = json_decode($response->getBody(), true);

        dd('result', $result);
    }
    catch (\Exception $e)
    {
        return response()->json([
            'status' => 0,
            'message' => $e->getMessage(),
            'trace' => $e->getTrace()
        ]);
    }

这是我 DD 出来时的样子:

API 的错误告诉我它需要两点,所以我想我没有构建查询字符串收集

文档:https://docs.graphhopper.com/#tag/Routing-API

错误:

导致 400 Bad Request 响应:\n{\"message\":\"指定在 至少 2 分\"}

【问题讨论】:

  • 是否有此 API 的文档页面可供您参考?此外,来自 API 的 exact 错误消息是什么。
  • 文档:docs.graphhopper.com/#tag/Routing-API 错误:导致400 Bad Request 响应:\n{\"message\":\"指定至少 2 个点\"}
  • 谢谢,我将这些详细信息添加到您的问题中,这是它们所属的位置,而不是 cmets。如果您被要求提供更多信息,请在将来这样做。我在下面添加了我希望是正确答案的内容。

标签: php laravel query-string


【解决方案1】:

您链接到的docs page 向您展示了如何构造查询字符串数据(参见右侧的测试平台)

例如

?point=51.131,12.414&point=48.224,3.867 

所以有两个“点”条目,每个条目包含两个逗号分隔格式的数据项。

而您的查询字符串输出中有四个单独的“point[x][y]”变量。您的 dd 输出表明 request()->input('point1')request()->input('point2') 本身就是数组。所以你得到的是一个由另外两个数组组成的数组,而不是一个平面结构。

我认为你需要这样写:

'point' => [request()->input('point1')[0].",".request()->input('point1')[1], request()->input('point2')[0].","request()->input('point2')[1]]

试试吧,我认为它应该可以工作,或者至少让你更接近你需要的地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-13
    • 2012-11-17
    相关资源
    最近更新 更多