Ich versuche, die Beiträge meines Diskurses abzurufen, aber ich weiß nicht, wo ich meine API-Schlüssel einfügen soll. Ich versuche also, eine Abfrage an eine Adresse zu senden: https://{defaultHost}/posts/{id}.json, aber es gibt mir einen Fehler, da ich die API-Schlüssel nicht eingeführt habe. Aber wo soll ich die API-Schlüssel einführen?
Ich bin mir nicht sicher, wie Sie Ihre API-Anfragen stellen (welches Tool oder welche Programmiersprache), aber der API-Schlüssel und der Benutzername gehören in den HTTP-Header.
Hier ist ein Curl-Beispiel von 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"
Ich mache das in Next.js. Wo soll ich diesen Code einfügen?
Ich bin nicht mit nextJS vertraut, daher bin ich mir nicht ganz sicher, aber es sieht so aus, als ob nextJS ein Tool namens SWR verwendet, um API-Anfragen zu stellen
Sie müssen SEHR vorsichtig sein, was den Geltungsbereich des API-Schlüssels betrifft, den Sie auf der Client-Seite speichern, und welche API-Aufrufe Sie an Discourse tätigen, damit Sie Ihren globalen API-Schlüssel nicht Benutzern preisgeben, da es so aussieht, als ob nextJS ein clientseitiges Framework und kein serverseitiges ist. Der richtige Weg ist wahrscheinlich, next.js eine serverseitige API-Anfrage stellen zu lassen, die dann einen authentifizierten API-Aufruf an Ihre Discourse-Instanz macht.
Diese Antwort könnte Ihnen helfen:
Gemäß der Dokumentation Arguments – SWR sollten Sie Folgendes tun
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);