Estou tentando buscar as postagens do meu discourse, mas não sei onde devo colocar minhas chaves de API. Então, estou tentando fazer uma busca para: https://{defaultHost}/posts/{id}.json, mas está me dando erro, pois não introduzi as chaves de API, mas onde devo introduzir as chaves de API?
Não tenho certeza de como você está fazendo suas solicitações de API (qual ferramenta ou linguagem de programação), mas a chave de API e o nome de usuário vão no cabeçalho HTTP.
Aqui está um exemplo 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"
Estou fazendo isso em Next.js. Onde devo colocar esse código?
Não estou familiarizado com nextJS, então não tenho certeza, mas parece que nextJS usa uma ferramenta chamada SWR para fazer requisições de API.
Você precisa ter MUITO cuidado com o escopo da chave de API que você está armazenando no lado do cliente e quais chamadas de API você faz para o Discourse para não expor sua chave de API global aos usuários, já que parece que nextJS é um framework do lado do cliente em vez de do lado do servidor. A maneira correta provavelmente seria ter o next.js fazendo uma requisição de API do lado do servidor que, em seguida, faz uma chamada de API autenticada para sua instância do Discourse.
Esta resposta pode te ajudar:
Conforme a documentação Arguments – SWR você deve fazer
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);