cepaberto-api-examples
cepaberto-api-examples copied to clipboard
Erro esporádico ao buscar cidades com caracteres acentuados
Alguns erros acontece ao se fazer a busca por cidades que possuem letras acentuadas, por exemplo: http://www.cepaberto.com/api/v3/address?estado=SP&cidade=São Paulo // retorna vazio http://www.cepaberto.com/api/v3/address?estado=SP&cidade=São+Paulo // retorna vazio http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o+Paulo // erro 500 http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o%20Paulo // erro 500 http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%C3%A3o%20Paulo // erro 500 http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%C3%A3o+Paulo // erro 500 http://www.cepaberto.com/api/v3/address?estado=SP&cidade=São Pedro // sucesso http://www.cepaberto.com/api/v3/address?estado=SP&cidade=São+Pedro // sucesso http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o+Pedro // erro 500 http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o%20Pedro // erro 500 etc... Podemos concluir que a API considera a consulta correta como "São Paulo" ou "São+Paulo" etc. Mas a documentação não é clara quanto a esses pontos. Acredito que não há mesmo resultado para a consulta considerando a forma correta dos parâmetros, mas seria bom se isto fosse documentado de forma mais clara. Obrigado
Estou tendo o mesmo problema, e não diria que é esporádico, uma vez que aconteceu todas as vezes que eu tentei acessar.
Além de cidades com acento também nao consigo efetuar busca por cidades com espaço no nome
curl -vvv -H "Authorization: Token token=<<CHAVE>>" "http://www.cepaberto.com/api/v3/address?estado=RS&cidade=Porto Alegre" <-- 200 ok mas resultado vazio
curl -vvv -H "Authorization: Token token=<<CHAVE>>" "http://www.cepaberto.com/api/v3/address?estado=RS&cidade=Porto%Alegre" <-- 200 ok mas resultado vazio
curl -vvv -H "Authorization: Token token=<<CHAVE>>" "http://www.cepaberto.com/api/v3/address?estado=RS&cidade=Ijui" <-- resultado ok - {"altitude":328.0," .... }}*
curl -vvv -H "Authorization: Token token=<<CHAVE>>" "http://www.cepaberto.com/api/v3/address?estado=RS&cidade=Ijuí" (nome da cidade com acento) <-- 400 Bad Request
Seria possivel atualizar a documentacao sobre como as requisicoes devem ser efetuadas em situacoes assim (com acento e espaço)??
Olá @GustavoAdolfo
Não consigo reproduzir nem um dos erros 500 mencionados. Fazendo os testes hoje todos as URLs abaixo retornam 200, embora não encontrem resultado, é verdade. Vou atualizar a documentação, pois deve-se usar acentos, da forma como o nome da cidade é escrito, sem fazer encoding da URL.
http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o+Paulo http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o%20Paulo http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%C3%A3o%20Paulo http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%C3%A3o+Paulo http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o+Pedro http://www.cepaberto.com/api/v3/address?estado=SP&cidade=S%E3o%20Pedro
De qualquer forma eu não recomendo fazer o encoding por si mesmo, use alguma biblioteca, por exemplo em Python com Requests:
import requests
headers = {'Authorization': 'Token token=...'}
def test_api_with_accent():
url = "http://cepaberto.com/api/v3/address"
for params in [
{'estado': 'SP', 'cidade': 'São Paulo'},
{'estado': 'RS', 'cidade': 'Ijuí'}
]:
response = requests.get(url, params=params, headers=headers)
assert response.status_code == 200
Como é feita a consulta no caso de /address?
Pergunto pq percebi que se for informado somente estado e cidade as vezes nao retorna (caso de Santo Ângelo no RS). Agora se coloco estado, cidade E logradouro obtem-se os dados... Ou seja, nao existe um "AND" na consulta?
Em dom., 19 de jan. de 2020 às 11:34, Eduardo [email protected] escreveu:
De qualquer forma eu não recomendo fazer o encoding por si mesmo, use alguma biblioteca, por exemplo em Python com Requests:
def test_api_with_accent():
for params in [ {'estado': 'SP', 'cidade': 'São Paulo'}, {'estado': 'RS', 'cidade': 'Ijuí'} ]: url = "http://cepaberto.com/api/v3/address" response = requests.get(url, params=params, headers=headers) assert response.status_code == 200
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/edumucelli/cepaberto-api-examples/issues/18?email_source=notifications&email_token=AB4YSW5OMIER4EWSNTURGSTQ6RQJHA5CNFSM4G45TLJKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEJKTUCY#issuecomment-576010763, or unsubscribe https://github.com/notifications/unsubscribe-auth/AB4YSW3IARQCVVQ75BCBJFDQ6RQJHANCNFSM4G45TLJA .