J’essaie de récupérer les publications de mon discourse mais je ne sais pas où mettre mes clés API. J’essaie donc de faire une requête vers : https://{defaultHost}/posts/{id}.json mais cela me donne une erreur car je n’ai pas introduit les clés API, mais où dois-je introduire les clés API ?
Je ne suis pas sûr de la manière dont vous effectuez vos requêtes API (quel outil ou langage de programmation), mais la clé API et le nom d’utilisateur vont dans l’en-tête HTTP.
Voici un exemple curl de Discourse REST API Documentation
curl -X POST "http://127.0.0.1:3000/categories" \
-H "Content-Type: multipart/form-data;" \
-H "Api-Key: 714552c6148e1617aeab526d0606184b94a80ec048fc09894ff1a72b740c5f19" \
-H "Api-Username: discourse1" \
-F "name=89853c20-4409-e91a-a8ea-f6cdff96aaaa" \
-F "color=49d9e9" \
-F "text_color=f0fcfd"
Je le fais en Next.js. Où devrais-je mettre ce code ?
Je ne connais pas nextJS, donc je ne suis pas totalement sûr, mais il semble que nextJS utilise un outil appelé SWR pour faire des requêtes API.
Vous devez faire TRÈS attention à la portée de la clé API que vous stockez côté client et aux appels API que vous faites à Discourse afin de ne pas exposer votre clé API globale aux utilisateurs, car il semble que nextJS soit un framework côté client plutôt que côté serveur. La bonne approche serait probablement que next.js effectue une requête API côté serveur qui effectue ensuite un appel API authentifié vers votre instance Discourse.
Cette réponse pourrait vous aider :
Conformément à la documentation Arguments – SWR, vous devriez faire
const fetcher = (url, token) => axios .get(url, { headers: { Authorization: "Bearer " + token } }) .then((res) => res.data); const { data, error } = useSWR( [`http://localhost:8000/api/v1/users/get-avatar`, auth.token], fetcher ); if (error) console.log(error); if (data) console.log(data);