Skip to main content

Oi Pessoal, boa tarde!

Estou fazendo uma requisição para uma API aqui a requisição é um GET, mas preciso passar informações no Body e no builder não tem essa opção, o Get não tem body. Alguém sabe como posso fazer essa requisição?

Não consigo alterar a API pois quem fez é uma empresa terceirizada do meu cliente. Já tentei mandar no header e nos Params, mas não funcionou.

 

@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}`);
});

 


Comente