BrasilAPI / cep-promise

Busca por CEP integrado diretamente aos serviços dos Correios, ViaCEP e outros (Node.js e Browser)
MIT License
2.88k stars 316 forks source link

FETCH não retorna dados #94

Closed medeirosrafael closed 6 years ago

medeirosrafael commented 7 years ago

Boa tarde. Hoje o viacep estava fora do ar, e acabei encontrando esse projeto. Gostei bastante da ideia. Meu projeto é em Angular2.

O problema é que toda requisição feita para os correios dá erro. Mesmo retornando dados (possível de ser visualizado no dev-tools). Aparentemente, o problema é que a requisição fetch feita com "mode: no-cors", retorna uma resposta com ok = false e type = opaque, sem header, sem body, sem nada..

O que eu posso fazer para resolver isso?

lucianopf commented 7 years ago

Boa noite amigo! =D

A verdade é que a lib começou com a ideia de resolver o problema no back-end, com Node, e com o tempo a gnt foi progredindo ela até chegar no front com o cliente web, o problema é que o service dos correios realmente não aceita requisições no browser, devido a política de CORS adotada.

Como fica explicito aqui.

Pra contornar esse problema uma boa solução seria criar um nano serviço que apenas resolvesse ceps, daí vc nunca mais teria problemas de CORS. 🤔

Por exemplo, criar uma função no webtask.io que resolva os ceps.

Vou criar uma função de exemplo aqui pra caso vc queira ter uma guia..

(Caso vc tenha alguma ideia de como resolver esse problema ao nível de lib, nós ficaremos muito felizes em discutir isso e melhorar o cep-promise

lucianopf commented 7 years ago

Exemplo

URL: https://wt-1e0e66e290be8bceb5902198c7a1999a-0.run.webtask.io/cep-promise/29065250

Code:

var express    = require('express');
var Webtask    = require('webtask-tools');
var bodyParser = require('body-parser');
var app = express();
const cep = require('cep-promise')

app.use(bodyParser.json());

app.get('/:cep', function (req, res) {
  if (req.params.cep) {
    return cep(req.params.cep)
      .then(response => res.json(response))
      .catch(e => res.send(500, e))
  } else {
    res.send(500, 'No cep provided')
  }
});

module.exports = Webtask.fromExpress(app);
medeirosrafael commented 7 years ago

@lucianopf, boa noite. Obrigado pelas explicações detalhadas e exemplos. Entendi a questão, como era algo meio urgente, eu acabei solucionando fazendo um "fallback" na mão, quando a requisição retorna erro do viacep, faço uma consulta para o meu servidor, que por sua vez vai faz a requisição para os correios. Não é excelente, mas, me atendeu. Minha necessidade era exclusivamente para front-end. Mais uma vez, obrigado pela atenção.

filipedeschamps commented 7 years ago

Precisamos de mais providers de cep :)

2017-10-03 22:35 GMT-03:00 medeirosrafael notifications@github.com:

@lucianopf https://github.com/lucianopf, boa noite. Obrigado pelas explicações detalhadas e exemplos. Entendi a questão, como era algo meio urgente, eu acabei solucionando fazendo um "fallback" na mão, quando a requisição retorna erro do viacep, faço uma consulta para o meu servidor, que por sua vez vai faz a requisição para os correios. Não é excelente, mas, me atendeu. Minha necessidade era exclusivamente para front-end. Mais uma vez, obrigado pela atenção.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/filipedeschamps/cep-promise/issues/94#issuecomment-334026659, or mute the thread https://github.com/notifications/unsubscribe-auth/AEDSEUfiW_AMJLVO-wvH-hR52DGxsGwpks5souDqgaJpZM4Pq_vD .

alexandremaeda commented 7 years ago

Uso bastante o postmon.

lucianopf commented 7 years ago

Interessante hein @alexandremaeda !!

Código com os services deles

alexandremaeda commented 7 years ago

Não parei de ver a fonte deles. É a mesma que vocês então...

lucianopf commented 7 years ago

Marromens, eles usam o cep tbm, mas de outra maneira (que talvez tenha cors: *) e usam outro que a gnt não usa.

Acho válido adicionar como service pra testar, o que acha @filipedeschamps ? 🤔

filipedeschamps commented 7 years ago

Ah que massa!

Eu integraria eles com certeza, ainda mais por utilizarem a outra abordagem de consultar o site mobile dos correios, é um bom fallback :)

On Wed, Oct 4, 2017 at 2:06 PM, Luciano Pellacani Franca < notifications@github.com> wrote:

Marromens, eles usam o cep tbm, mas de outra maneira (que talvez tenha cors: *) e usam outro que a gnt não usa.

Acho válido adicionar como service pra testar, o que acha @filipedeschamps https://github.com/filipedeschamps ? 🤔

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/filipedeschamps/cep-promise/issues/94#issuecomment-334223592, or mute the thread https://github.com/notifications/unsubscribe-auth/AEDSEb79w1n25Pnut0ImywwkCxZmgLEkks5so7sKgaJpZM4Pq_vD .

lucianopf commented 7 years ago

🤕

Pq diabos a galera não mete um * hein?!

screen shot 2017-10-16 at 11 26 53 am

leogregianin commented 6 years ago

Que acham de implementar o cepaberto.com ? A única diferença da requisição do ViaCEP é o token de autorização.

lucianopf commented 6 years ago

Curti hein mano! =D

Me parece bem simples de usar!

curl http://www.cepaberto.com/api/v2/ceps.json?cep=40010000 -H \
'Authorization: Token token="37bfda18fd4b423cdb6748d14ba30aa6"'
filipedeschamps commented 6 years ago

Suporte ao Cep Aberto adicionado pelo @lucianopf na versão 2.0.6 👍 👍 👍 👍 👍 👍 👍