Laravel France

API en POST avec CURL

Avatar de Djayze
Djayze

Bonjour,

je cherche des précisions concernant l'utilisation des API en POST. Que doit contenir par défaut le "CURLOPT_HTTPHEADER", y a t-il des champs obligatoires?

Concernant le CURLOPT_POSTFIELDS, les données qu'on lui passe en paramètres doivent-elle être encodées en JSON avant? exemple : $data_string = json_encode($data);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);

est-ce la bonne façon de faire?

Merci de vos retours.

David

Posté il y a 9 mois
Avatar de bArraxasArraxas
bArraxasArraxas

Cela dépend des exigences de ton api. Voici un exemple perso quand j'ai du joindre une api sécurisée par token :

<?php
	try {
		$ch = curl_init();
		curl_setopt ( $ch, CURLOPT_URL, "http://api.blabla.be/api/cron" );
		curl_setopt ( $ch, CURLOPT_HTTPHEADER, [ "Authenticate: Bearer eyJhbGOiJIUzI1NiIsInR5cCI6IkCJ9.eyJ1aWQiOjF9.iEJ5awPTtiXU8BwAH8vb6MrfkQv9EQDKFth3Ylyx_uV0" ] );
		curl_setopt ( $ch, CURLOPT_POST, false );
		curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
		$log = curl_exec($ch);
		echo $log;
		curl_close($ch);
	}
	catch (Exception $e) {
		echo 'exception_curl : ' . $e->getMessage() . ' | ';
	}
?>

Là c'était juste un appel simple sans passage de paramètre mais au moins tu un début de réponse à la question de savoir quoi mettre dans le champ "CURLOPT_HTTPHEADER"

Posté il y a 9 mois
Avatar de Djayze
Djayze

Bonjour à tous,

Merci bArraxasArraxas d'avoir pris le temps de me répondre.

Après avoir recherché sur le net, j'ai trouvé. Pour mon code il se détaille ainsi pour ceux que ça pourrait aider:

$data = array( 'title' => $request->titre, 'description' => $request->description, );

$curl = curl_init();

curl_setopt_array($curl, array(
      CURLOPT_URL => "https://monapi.com/api/v2/tickets",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_ENCODING => "",
      CURLOPT_MAXREDIRS => 10,
      CURLOPT_TIMEOUT => 30,
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
      CURLOPT_CUSTOMREQUEST => "POST",
      CURLOPT_POSTFIELDS => http_build_query($data),
      CURLOPT_HTTPHEADER => array(
        "userApiKey: unCodeAPIsecretPerso"
      ),
    ));

    $response = curl_exec($curl);
    $err = curl_error($curl);

    curl_close($curl);

    if ($err) {
      echo "cURL Error #:" . $err;
    } else {
      echo $response;
    }
    
   c'est le "http_build_query"  CURLOPT_POSTFIELDS qui permet de formater correctement les données que j'envoie.
Posté il y a 9 mois

Vous ne pouvez pas répondre à ce sujet.