Testez, copiez et branchez vos appels Directus en quelques secondes. Renseignez votre instance et votre token, jouez avec les fonctions (lister, créer, mettre à jour, supprimer, rechercher), puis copiez le code prêt à l’emploi.
<?php
// Variables par défaut
$DEFAULT_DIRECTUS_URL = getenv('DIRECTUS_URL') ?: 'https://example.directus.app';
$DEFAULT_DIRECTUS_TOKEN = getenv('DIRECTUS_TOKEN') ?: '';
$DEFAULT_COLLECTION = 'articles';
/* =========
KERNEL: requête générique
========= */
function directus_request(string $method, string $url, string $token = '', array $options = []) {
$ch = curl_init();
$headers = ['Content-Type: application/json'];
if ($token) $headers[] = 'Authorization: Bearer ' . $token;
$payload = null;
if (isset($options['json'])) {
$payload = json_encode($options['json'], JSON_UNESCAPED_UNICODE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
}
// Query string (GET)
if (isset($options['query']) && is_array($options['query']) && $method === 'GET') {
$qs = http_build_query($options['query']);
$url .= (str_contains($url, '?') ? '&' : '?') . $qs;
}
curl_setopt_array($ch, [
CURLOPT_URL => $url,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 6,
CURLOPT_TIMEOUT => 15,
]);
$raw = curl_exec($ch);
$err = curl_error($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($err) {
return ['ok' => false, 'status' => 0, 'error' => "cURL: $err", 'data' => null];
}
$json = json_decode($raw, true);
if ($code >= 200 && $code < 300) {
return ['ok' => true, 'status' => $code, 'error' => null, 'data' => $json];
}
// Tente d’extraire le message Directus
$msg = $json['errors'][0]['message'] ?? $raw;
return ['ok' => false, 'status' => $code, 'error' => $msg, 'data' => $json];
}
/* =========
HELPERS CRUD
========= */
function dx_base(string $baseUrl): string {
return rtrim($baseUrl, '/');
}
function dx_items(string $baseUrl, string $collection): string {
return dx_base($baseUrl) . '/items/' . rawurlencode($collection);
}
function dx_add(string $baseUrl, string $token, string $collection, array $item) {
return directus_request('POST', dx_items($baseUrl, $collection), $token, ['json' => $item]);
}
function dx_get(string $baseUrl, string $token, string $collection, array $params = []) {
// $params peut inclure: 'filter', 'fields', 'sort', 'limit', 'offset'
return directus_request('GET', dx_items($baseUrl, $collection), $token, ['query' => $params]);
}
function dx_get_last_10(string $baseUrl, string $token, string $collection, array $fields = ['*']) {
// Tri décroissant sur date_created si dispo, sinon id
$params = [
'limit' => 10,
'sort[]' => '-date_created', // Directus standard ; si champ absent, change en '-id'
'fields' => implode(',', $fields),
];
return dx_get($baseUrl, $token, $collection, $params);
}
function dx_update(string $baseUrl, string $token, string $collection, $id, array $patch) {
$url = dx_items($baseUrl, $collection) . '/' . rawurlencode((string)$id);
return directus_request('PATCH', $url, $token, ['json' => $patch]);
}
function dx_delete(string $baseUrl, string $token, string $collection, $id) {
$url = dx_items($baseUrl, $collection) . '/' . rawurlencode((string)$id);
return directus_request('DELETE', $url, $token);
}
?>
<?php
function dx_add(string $baseUrl, string $token, string $collection, array $item) {
return directus_request('POST', dx_items($baseUrl, $collection), $token, ['json' => $item]);
}
?>
<?php
function dx_get(string $baseUrl, string $token, string $collection, array $params = []) {
// $params peut inclure: 'filter', 'fields', 'sort', 'limit', 'offset'
return directus_request('GET', dx_items($baseUrl, $collection), $token, ['query' => $params]);
}
?>
<?php
function dx_get_last_10(string $baseUrl, string $token, string $collection, array $fields = ['*']) {
// Tri décroissant sur date_created si dispo, sinon id
$params = [
'limit' => 10,
'sort[]' => '-date_created', // Directus standard ; si champ absent, change en '-id'
'fields' => implode(',', $fields),
];
return dx_get($baseUrl, $token, $collection, $params);
}
?>
<?php
function dx_get(string $baseUrl, string $token, string $collection, array $params = []) {
// $params peut inclure: 'filter', 'fields', 'sort', 'limit', 'offset'
return directus_request('GET', dx_items($baseUrl, $collection), $token, ['query' => $params]);
}
?>
<?php
function dx_update(string $baseUrl, string $token, string $collection, $id, array $patch) {
$url = dx_items($baseUrl, $collection) . '/' . rawurlencode((string)$id);
return directus_request('PATCH', $url, $token, ['json' => $patch]);
}
?>
<?php
function dx_delete(string $baseUrl, string $token, string $collection, $id) {
$url = dx_items($baseUrl, $collection) . '/' . rawurlencode((string)$id);
return directus_request('DELETE', $url, $token);
}
?>