Exemple d'API en direct : Créer un travail en direct
Introduction
Cet exemple crée une tâche Live simple avec trois rendus de sortie : 1080p, 720p et 480p.
Comme le n' Live API est pas activé CORS et doit être accessible à partir d'une application côté serveur, la requête d'API est envoyée via un simple proxy écrit en PHP. Vous pouvez le reproduire dans n'importe quelle langue côté serveur : il suffit de collecter les paramètres de demande envoyés par le JavaScript, d'envoyer la demande à l'API et de renvoyer la réponse au JavaScript. Tout le code se trouve dans le section de code ci-dessous.
Créer une application d'emploi en direct
Retrouvez tout le code associé à cet exemple dans ce référentiel GitHub.Voir le stylo Exemple d'API en direct : Créez un emploi en direct par Brightcove Learning Services (@rcrooks1969) sur CodePen.
Utilisation du CodePen
Code proxy
En plus du code trouvé dans CodePen (et le référentiel GitHub associé), cet exemple nécessite un proxy pour effectuer la demande d'API et renvoyer la réponse à l'application. Pour cette application, nous avons utilisé PHP et le code est présenté ci-dessous. Vous pouvez utiliser n'importe quel langage côté serveur pour créer le proxy.
Exemple de code proxy
<? php
/**
* live-proxy.php : proxy pour les API Brightcove Live
* fait la requête, et retourne la réponse
* Accès :
* (notez que vous devriez *toujours* accéder au proxy via HTTPS)
* Méthode : POST
*
* @post {string} url : URL de la demande d'API
* @post {string} [RequestType=get] - Méthode HTTP pour la demande
* @post {string} [RequestBody] - Données JSON à envoyer avec les demandes d'écriture
* @post {string} ApiKey - Clé d'API active
*
* @returns {string} $response - Réponse JSON reçue de l'API
*/
//Activation CORS et autres en-têtes
en-tête (« Access-Control-Allow-Origin : * ») ;
en-tête (« Content-type : application/json ») ;
(« X-Content-Type-Options : nosniff ») ;
en-tête (« X-XSS-protection ») ;
$requestData = json_decode (file_get_contents ('php : //entrée')) ;
//configuration de l'appel d'API
//Obtenir la clé api
$apikey = $requestData->clé API ;
//Obtenir le type de requête ou par défaut à GET
si ($requestData->requestType) {
$method = $requestData->RequestType ;
} else {
$method = "GET";
}
//plus de contrôles de sécurité
$needle = '.io' ;
$endapi = strpos ($requestData->URL, $needle) + 3 ;
$nextChar = substr ($requestData->URL, $endapi, 1) ;
if (strpos ($requestData->URL, 'api.bcovlive.io') = false) {
exit ('{"ERROR » ="Seules les demandes adressées aux API Brightcove Live sont acceptées par ce proxy "}') ;
} sinon si ($nextChar ! == '/' && $NextChar ! == '? ') {
exit ('{"ERREUR » : « Un problème s'est produit avec votre demande d'API. Vérifiez l'URL"} ') ;
}
//récupère l'URL et les informations d'autorisation à partir des données du formulaire
$request = $requestData->URL ;
//envoyer la requête http
si ($requestData->requestBody) {
$ch = curl_init ($request) ;
curl_setopt_array($ch, array(
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HTTPHEADER => tableau (
'Content-type : application/json',
« CLÉ API X : {$apikey} »,
),
CURLOPT_POSTFIELDS => $requestData->RequestBody
))) ;
$response = curl_exec ($ch) ;
curl_close ($ch) ;
} else {
$ch = curl_init ($request) ;
curl_setopt_array($ch, array(
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_RETURNTRANSFER => TRUE,
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_HTTPHEADER => tableau (
'Content-type : application/json',
« CLÉ API X : {$apikey} »,
)
))) ;
$response = curl_exec ($ch) ;
curl_close ($ch) ;
}
//Vérification des erreurs
if ($response === FALSE) {
$LogEntry = « \ nErreur : \ n ».
« \ n » .date (« Y-M-d H:i:S »). « UTC \ n »
.$ réponse ;
$logFileLocation = "log.txt « ;
$fileHandle = fopen ($logFileLocation, 'a') ou die (« -1") ;
fwrite ($FileHandle, $LogEntry) ;
fclose ($FileHandle) ;
echo '{"ERREUR » : « Il y a eu un problème avec votre appel API"} '+
die (curl_error ($ch)) ;
}
//Décode la réponse
//$responseData = json_decode ($response, TRUE) ;
//retourne la réponse à l'appelant AJAX
$responseDecoded = json_decode ($response) ;
//si (! est défini ($responseDecoded) {
// $response = '{null}' ;
//}
echo $ réponse ;
? >