¿Dónde debería poner las API keys de Discourse para poder obtener las publicaciones?

Estoy intentando obtener las publicaciones de mi Discourse, pero no sé dónde poner mis claves de API. Así que estoy intentando hacer una solicitud a: https://{defaultHost}/posts/{id}.json, pero me está dando un error ya que no he introducido las claves de API, pero ¿dónde debería introducirlas?

No estoy seguro de cómo realizas tus solicitudes de API (qué herramienta o lenguaje de programación), pero la clave de API y el nombre de usuario van en la cabecera http.

Aquí tienes un ejemplo de 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"
2 Me gusta

Lo estoy haciendo en nextJS. ¿Dónde debería poner ese código?

No estoy familiarizado con nextJS, así que no estoy totalmente seguro, pero parece que nextJS usa una herramienta llamada SWR para hacer solicitudes a la API.

Debes tener MUCHO cuidado con el alcance de la clave de API que almacenas en el lado del cliente y con qué llamadas a la API haces a Discourse para no exponer tu clave de API global a los usuarios, ya que parece que nextJS es un framework del lado del cliente en lugar de del lado del servidor. La forma correcta probablemente sea hacer que next.js haga una solicitud a la API del lado del servidor que luego haga una llamada autenticada a tu instancia de Discourse.

Esta respuesta podría ayudarte:

Según la documentación Arguments – SWR, deberías hacer

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);
1 me gusta