@Rvdada1911 boa tarde!
Acho que não tem como passar body em um GET no Blip.
Eu criaria uma API que faria esse “meio de campo” com a API da empresa terceirizada para que vc consiga fazer a requisição.
@Rvdada1911 boa tarde!
Acho que não tem como passar body em um GET no Blip.
Eu criaria uma API que faria esse “meio de campo” com a API da empresa terceirizada para que vc consiga fazer a requisição.
Então, eu até já desenvolvi essa API intermediária, pois o blip não conseguia comunicar com a API do cliente, mas a dificuldade que estou é que como tem requisições post e requisições get, eu não sei como eu passaria isso pra API Intermediaria fazer a requisição na API final.
@Rvdada1911 boa tarde!
Acho que não tem como passar body em um GET no Blip.
Eu criaria uma API que faria esse “meio de campo” com a API da empresa terceirizada para que vc consiga fazer a requisição.
Então, eu até já desenvolvi essa API intermediária, pois o blip não conseguia comunicar com a API do cliente, mas a dificuldade que estou é que como tem requisições post e requisições get, eu não sei como eu passaria isso pra API Intermediaria fazer a requisição na API final.
Você consegue pedir um exemplo de chamada pro terceiro? Pq geralmente requisições GET não tem body. Tenta reproduzir com eles via Postman e ai depois ficará mais fácil achar uma solução.
@Rvdada1911 boa tarde!
Acho que não tem como passar body em um GET no Blip.
Eu criaria uma API que faria esse “meio de campo” com a API da empresa terceirizada para que vc consiga fazer a requisição.
Então, eu até já desenvolvi essa API intermediária, pois o blip não conseguia comunicar com a API do cliente, mas a dificuldade que estou é que como tem requisições post e requisições get, eu não sei como eu passaria isso pra API Intermediaria fazer a requisição na API final.
Você consegue pedir um exemplo de chamada pro terceiro? Pq geralmente requisições GET não tem body. Tenta reproduzir com eles via Postman e ai depois ficará mais fácil achar uma solução.
Oi @Lucas Ventura, eu consegui resolver. Eu configurei a API intermediária para receber a requisição como um post e aí no body eu envio o method e ela captura lá e muda na hora de enviar para a API final, funciona tanto para post quanto para Get. Aí os dados do body ela também faz nesse envio. Como a API final precisa de um token para acessar, também configurei para pegar esse token no cabeçalho. Vou mandar o código que eu usei na api intermediária aqui, pode ser que mais alguém precise.
const express = require('express');
const axios = require('axios');
const app = express(); // Inicializa o Express
const PORT = 0000; // Define a porta onde o servidor vai escutar
// Middleware para processar JSON no corpo da requisição
app.use(express.json());
// Rota dinâmica para /proxy
app.post('/proxy/*', async (req, res) => {
try {
// Captura o caminho completo após /proxy/
const path = req.paramsa0]; // Captura todo o caminho dinâmico
console.log('Path recebido:', path);
const { method, body } = req.body; // Extrai o método e o body do cliente
console.log('Método solicitado:', method);
console.log('Body recebido:', body);
// Construa a URL da API final
const targetUrl = `https://teste:0000/${path}`;
console.log('URL de destino gerada:', targetUrl);
let apiResponse;
if (method === 'GET') {
console.log('Executando requisição GET para a API final...');
apiResponse = await axios({
method: 'GET',
url: targetUrl,
headers: {
'Content-Type': 'application/json',
},
data: body, // Inclui o body mesmo no GET
timeout: 15000,
});
} else if (method === 'POST') {
console.log('Executando requisição POST para a API final...');
apiResponse = await axios({
method: 'POST',
url: targetUrl,
headers: {
'Content-Type': 'application/json',
},
data: body,
timeout: 15000,
});
} else {
return res.status(400).json({ error: 'Método inválido. Use GET ou POST.' });
}
// Retorna a resposta da API final para o cliente
res.status(apiResponse.status).json(apiResponse.data);
} catch (error) {
console.error('Erro na API intermediária:', error.message);
if (error.response) {
console.error('Erro na API final:', error.response.data);
res.status(error.response.status).json(error.response.data);
} else {
res.status(500).json({ error: 'Internal Server Error', details: error.message });
}
}
});
// Inicializa o servidor
app.listen(PORT, '0.0.0.0', () => {
console.log(`Servidor rodando na porta ${PORT}`);
});