2017-10-05 2 views
0

Je veux vérifier toutes les URLs demandées et si l'URL contient un dossier "video", redirige-le vers un fichier API. alors l'API me donne un fichier json qui ne contient que "répondre: vrai" ou "répondre: faux". En cas de réponse: true dans le fichier json, l'URL doit être affichée et si le fichier json contient répondre: false, une page 403 simple prédéfinie doit être montrée à l'utilisateur.comment appeler une API via php et obtenir un fichier json

Je sais que la partie de poing est possible avec un simple code dans le fichier .htaccess comme ceci:

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

Mais je ne sais pas comment faire la deuxième partie. Je veux dire comment obtenir le résultat de l'API, qui est sous la forme d'un fichier json et le vérifier.

Répondre

1

Vous pouvez utiliser CURL ..

GET DEMANDE

$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); 

POST DEMANDE

$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); 

Vous pouvez également utiliser file_get_content pour obtenir des données de l'API.

$json = file_get_contents("$url") 
1

Vous pouvez exécuter la deuxième partie (appel de l'API et la réponse): API appel à l'aide enroulent et processus en fonction de sa réponse:

$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 
} 

S'il vous plaît noter: réponse JSON API est dépendent de la réponse de l'API, Si l'API donne une réponse au format json (peut aussi être basé sur params).

+0

bonne solution. mais j'ai déjà trouvé que si je veux garder l'url de base (le ulr qui est demandé par l'utilisateur) je ne peux pas utiliser le fichier .htaccess pour la redirection !! Alors, comment puis-je forcer chaque URL demandée à être vérifiée par l'API en utilisant un fichier php? – shekoufeh

+0

@shekoufeh vous pouvez utiliser le code ci-dessus avant le routage ou dans index.php avant les autres codes. Placez l'état en conséquence – BSB

+0

Je veux juste le faire chaque fois qu'un fichier vidéo est demandé. il n'y a pas de fichier php. Je suis vraiment confus dans cette partie ... – shekoufeh