【问题标题】:how to call an api via php and get a json file from it如何通过php调用api并从中获取json文件
【发布时间】:2018-03-16 15:35:54
【问题描述】:

我想检查所有请求的 url,如果 url 中包含“video”文件夹,则将其重定向到 API 文件。然后 API 给了我一个只包含“respond:true”或“respond:false”的 json 文件。如果 json 文件中有 respond:true 则必须显示 url,如果 json 文件包含 respond:false 则必须向用户显示预定义的简单 403 页面。

我知道第一个部分可以通过 .htaccess 文件中的简单代码实现,如下所示:

RewriteRule ^your/special/folder/ /specified/url [R,L]

但我不知道如何做第二部分。我的意思是如何获取API的结果,它是一个json文件的形式并检查它。

【问题讨论】:

    标签: php json .htaccess rest api


    【解决方案1】:

    你可以使用 CURL..

    获取请求

    $url = 'http://example.com/api/products';
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HTTPGET, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response_json = curl_exec($ch);
    curl_close($ch);
    $response=json_decode($response_json, true);
    

    发布请求

        $postdata = array(
            'name' => 'Arfan'
        );
    
        $url = "https://example.com/api/user/create";
    
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_HEADER, false);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($curl, CURLOPT_POST, true);
        curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
    
        $json_response = curl_exec($curl);
        $status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
        curl_close($curl);
    

    您也可以使用 file_get_content 来获取 API 数据。

    $json = file_get_contents("$url")
    

    【讨论】:

      【解决方案2】:

      您可以执行第二部分(调用 API 和响应):使用 curl 调用 API 并根据其响应进行处理:

       $ch = curl_init();
       curl_setopt($ch, CURLOPT_POST, false);
       curl_setopt($ch, CURLOPT_URL, "api_url_here");
       curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
       $api_response_json = curl_exec($ch);
       curl_close($ch);
       //convert json to PHP array for further process
       $api_response_arr = json_decode($api_response_json);
      
       if($api_response_arr['respond'] == true ){
          //code for success here
       }else{
          // code for false here
       }
      

      请注意:来自 API 的 Json 响应取决于 API 响应,如果 API 以 json 格式给出响应(也可以基于参数)。

      【讨论】:

      • 很好的解决方案。但我已经发现,如果我想保留基本 url(用户请求的 ulr),我不能使用 .htaccess 文件进行重定向!那么,如何强制 API 使用 php 文件检查每个请求的 url?
      • @shekoufeh 您可以在路由之前使用上述代码,也可以在其他代码之前在 index.php 中使用。相应地放置条件
      • 我只想在请求视频文件时执行此操作。没有php文件。这部分我真的很困惑......
      猜你喜欢
      • 2015-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-08-21
      • 2017-07-09
      • 2015-10-24
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多