【问题标题】:Getting the JSON reponse from an API with Laravel使用 Laravel 从 API 获取 JSON 响应
【发布时间】:2014-09-16 03:32:40
【问题描述】:

我只是在搞乱 API,现在我正尝试在我的应用程序中使用 Google Directions API

我制作了一个表单来获取用户的输入并检索此数据并在 routes.php 文件中创建 URI:

Route::get('/directions', function() {
    $origin = Input::get('origin');
    $destination = Input::get('destination');

    $url = "http://maps.googleapis.com/maps/api/directions/json?origin=" . $origin . "&destination=" . $destination . "&sensor=false";
});

该 URL 的响应是 JSON。但是现在,我应该如何使用 Laravel 存储该响应?我一直在查看 Laravel 中的 Http 命名空间,但没有找到方法。如果用 Laravel 做不到,那么用普通的 php 怎么做呢?

【问题讨论】:

    标签: php json laravel laravel-4 response


    【解决方案1】:

    你可以试试这个步骤...

    设置路线...

    Route::get('/json', [yourController::class, 'getJSON']);
    

    以及获取json格式值的方法

    public function getJSON(Request $request)
    {
    
        $url = 'https://api******';
    
        $response = file_get_contents($url);
        $newsData = json_decode($response);
    
    
        return response()->json($newsData);         
    
    }
    

    【讨论】:

    • @JaredSmith 指出 response->json() 证明了这一点,这也是搜索 laravel json api 时的第一个结果,所以问题的年龄无关紧要
    【解决方案2】:

    看看我的包裹

    https://github.com/joshhornby/Http

    希望 API 的调用更容易一些

    【讨论】:

    • 我去看看,看起来不错。我希望 Laravel 实现这样的东西。
    • “看看我的包裹”你是故意的还是无意的?
    【解决方案3】:

    您可以使用file_get_contents()

    Route::get('/directions', function() {
        $origin = Input::get('origin');
        $destination = Input::get('destination');
    
        $url = urlencode ("http://maps.googleapis.com/maps/api/directions/json?origin=" . $origin . "&destination=" . $destination . "&sensor=false");
    
        $json = json_decode(file_get_contents($url), true);
    
        dd($json);
    });
    

    【讨论】:

    • 谢谢,这更接近我想要的。但是,1:laravel 没有提供任何方法来做到这一点吗?和 2,我收到一个带有一些字符的 400 Bad Request。我尝试用utf8_encode 包装file_get_contents 的结果,但它没有解决问题。有什么想法吗?
    • 由于某种原因,dd 也不是“漂亮的印刷品”
    • dd 只是转储变量以向您展示它的工作原理。你可以对变量做任何你想做的事情,以你想要的方式打印它。
    • 至于“laravel 没有提供任何方法来做到这一点” - 这 你这样做的方式。另一种选择是使用像 Guzzle 这样的包并 curl 请求 - github.com/guzzle/guzzle
    • 最后 - 我修改了我的答案以包含 urlencode() 以使其适用于其他字符
    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多