Peinard, ça ouvrait la porte de SPIP. Mais depuis le passage à SPIP4.4, certains appels, pas tous mais je sais pas lesquels au juste, laissent une erreur dans l’error log de l’hébergement :
PHP Fatal error: Uncaught Error:
Call to undefined function SpipLeague\Component\Kernel\param()
in lesite/ecrire/inc_version.php:47
Stack trace:
#0 lesite/plugins/leplugin/apidurl.php(12): include_once()
#1 {main}\n thrown in lesite/ecrire/inc_version.php on line 47
Je vois bien qu’il y a, au dessus, la ligne use function SpipLeague\Component\Kernel\{app, param};
qui motive la description de l’erreur comme portant sur SpipLeague\Component\Kernel\param()
… mais alors… qu’est ce qui manque pour que ça passe bien ?
À tout hasard, si tu sais que tu veux avoir SPIP chargé dedans, plutôt que de refaire tout toi-même à la main (et risque d’oublier des choses ou de ne plus être à jour au fil du temps), tu peux pas plutôt faire une action ? Et même une action « api » si tu veux une meilleure URL : action/api_truc.php → https://le.site/truc.api
@rastapopoulos Tu suggères d’appeler une action… mais pour un appel depuis un autre site, je n’ai jamais envisagé ça.
En POST, donc ?
Spontanément je pense aux arguments sécurisés genre avec le secret_du_site ou son alea_ephemere, inaccessibles sur un autre site… mais je peux aussi gérer la sécu autrement.
J’ai du mal à saisir ce que tu souhaites faire exactement, mais effectivement en général, on fait un fichier action/api_xxx pour être appelé avec /xxx.api ou ?action=xxx.api (ou qqc comme ça) : après tu fais ce que tu veux dans ton fichier d’action … et tout ton SPIP est déjà booté dedans…
Ben justement le plugin HTTP utilise une action « api »… Les actions (en mode api ou pas peu importe) n’ont pas de rapport particulier à GET ou POST, ça dépend totalement de ce que tu mets dedans, et tu fais bien ce que tu veux.
Une page d’objet ou page=truc, c’est SPIP qui démarre et qui répond avec un template à compiler.
Une action, c’est SPIP qui démarre, et qui te laisse répondre dans une fonction PHP
Donc si tu veux avoir un SPIP booté, et contrôler ce que tu renvoies en PHP, c’est bien une action qu’il faut utiliser.
Bien que connaissant les différentes pièces du puzzle, je n’avais pas percuté que je pouvais m’en servir pour créer une API indépendamment du plugin http.