Como utilizar uma REST API em uma página HTML com JS?

Enviar
Informações
</table>
<script type="text/javascript">
	var api = 'http://api.postmon.com.br/v1/cep/';
	var info;
   	function setUp() {
   		var button = select('#botao');
   		button.mousePressed(cepDados);
   		document.getElementById("bairro").innerHTML = recebeDados().info.logradouro;
   		document.getElementById("logradouro").innerHTML = recebeDados().info.logradouro;
   		document.getElementById("cidade").innerHTML = recebeDados().info.logradouro;
   		document.getElementById("estado").innerHTML = recebeDados().info.logradouro;
   	}

   	function cepDados(){
 		var url = api + input.value();
   		loadJSON(url, recebeDados);
   	}

   	function recebeDados(dados_str){
        info = JSON.parse(dados_str);
    }
</script>

Ola

existia uma limitação no AJAX que é: vc não pode fazer chamadas via Javascript para outro dominio. Eis que a resposta era abusar de iframes ( ou subdominios via CNAME dns em casos particulares ).

Hoje existem algumas alternativas como

  • “Same-origin policy” que o servidor pode responder a um request externo. Isso é algo que o servidor precisa suportar e a maioria dos browsers (acho) adicionam o Header Origin automagicamente ( veja aqui: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Origin )

  • acessar via jsonp : varias APIs hoje em dia suportam jsonp. que é uma forma de burlar as limitações do AJAX. vc carrega o acesso a api via uma tag <script source="a-api-q-quero-acessar/caminho?parametros&format=jsonp&callback=minhaFuncao"/> e vc instrui a API a retornar um javascript que vai executar, no browser corrente, minhaFuncao( dados ) ai vc so precisa desenvolver a função que vai interpretar os dados.

tudo depende do servidor. se o servidor não suporta nada então o SEU backend vai ter que fazer Proxy para la. vc vai ter que fazer a SUA api rest que pode, por exemplo, acessar a API deles.

infelizmente a vida é assim. mas tem uma questão de segurança por tras.

provavelmente, o caso dele contempla um servidor com CORS habilitado, nada do que comentou vale para este caso, não é?