Documentação
O endpoint deverá receber os parâmetros necessários, no formato JSON, através de um POST e devolver, no corpo da requisição, a resposta do webservice dos Correios.
Qual o script de funcionamento do endpoint?
O endpoint deverá:
- Receber os parâmetros
- Construir um objeto com base nos parâmetros passados
- Realizar a chama ao webservice dos Correios
- Parsear a resposta
- Devolver um JSON
Explicando melhor cada etapa
Receber os parâmetros:
Parâmetros exigidos pelo webservice dos Correios:
- nCdServico: representa a modalidade do frete (PAC, Sedex ou outro).
- sCepOrigem: representa o CEP de origem da encomenda.
- sCepDestino: representa o CEP do destinatário.
Construir um objeto com base nos parâmetros passados:
Construa o objeto passando as variáveis provenientes do corpo da requisição (as variáveis enviadas
através do POST podem ser acessadas utilizando "req.body.nomeDaVariavel")
(A ideia é desenvolver uma função pra montar esse objeto com base nos parâmetros passados, mas
ainda não foi iniciado).
Realizar a chama ao webservice dos Correios:
- Qual o método?:
O método utilizado será o POST.
method: 'POST',
- Como deverá ser o corpo da requisição?:
Atualmente, o "form-urlencoded" está sendo utilizado para "montar" a requisição, mas ele não será
utilizado mais. No lugar disso, você deverá utilizar a função "mountSeachParams", passando o objeto
montado no passo anterior como argumento. A função retornará uma "querystring" que deve ser
passada como corpo da requisição.
body: mountSeachParams(obj),
- Qual a URL do webservice?:
A URL que deverá receber a requisição é a seguinte:
url: 'http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx/CalcPrazo'
Parsear a resposta:
O serviço dos Correios "conversa" em XML, por isso, precisamos fazer um parse do que nos é
enviado. A função "parseResponse" é responsável por isso. Ela deverá receber um XML e devolver um
JSON.
Como nossas requisições são Promises, você pode utilizar a função no primeiro "then", passando
como argumento a resposta. Algo como:
.then(response => parseResponse(response))
Devolver um JSON:
Basta, no segundo "then" da requisição ao webservice, chamar o objeto "res" do Express e utilizar o
método "json" passando a resposta.
.then(response => res.json(response))