Como usar o gerenciamento de API do Azure para facilitar sua vida
Uma das evoluções mais empolgantes na web hoje é o número cada vez maior de APIs disponíveis publicamente, conforme exposto por empresas e indivíduos.
Uma das evoluções mais empolgantes na web hoje é o número cada vez maior de APIs disponíveis publicamente, conforme exposto por empresas e indivíduos. Essas APIs permitem que seus proprietários exponham dados de sistemas internos à Internet para que desenvolvedores externos possam começar a brincar com eles. Sites como o ProgrammableWeb listam todas essas APIs, e a lista está crescendo a cada dia.
O que tudo isso significa é que, em vez de criar um aplicativo que aproveita seus dados ou serviços, você simplesmente publica uma API e permite que outras pessoas criem aplicativos. Ou você pode fazer as duas coisas. Facebook, Twitter e Google, por exemplo, têm seus próprios aplicativos, mas também publicam seus serviços e dados em APIs.
Criar essa API é uma coisa, outra coisa é publicá-la, mantê-la e documentá-la. Você provavelmente não quer que todos tenham acesso ilimitado aos seus desenvolvimentos – você pode querer ter um site de documentação com exemplos e também pode, naturalmente, querer monetizá-lo.
Agora, aqui está a boa notícia: a API de Gerenciamento do Azure faz tudo isso e muito mais! Ele permite que você publique sua API na Internet, gere automaticamente exemplos de código e documentação, configure acesso e limitação, analise o uso de sua API e muito mais.
O que vamos mostrar?
Nesta postagem do blog, publicaremos uma fonte de dados interna na nuvem criando uma API, publicada na API de Gerenciamento do Azure. Isso envolve as seguintes etapas:
- Create a Web API
- Publicar esta API Web em um aplicativo Web do Azure
- Publish to Azure Management API
- Use-o em um projeto de cliente
Create a Web API That Publishes Data
No post de hoje, criarei um projeto de API Web ASP.NET para publicar uma fonte de dados fictícia. Pode ser um banco de dados interno, por exemplo, resultados de testes, dados de análise ou qualquer outra coisa. Para simplificar, não vou publicar uma fonte de dados real, mas criar stubs para simular uma fonte de dados. Em ambos os casos, as etapas a serem seguidas são exatamente as mesmas.
Vou publicar nossa fonte de dados fictícia no Azure, pois essa é a solução mais fácil. Sinta-se à vontade para acompanhar – você precisará de uma assinatura ativa (gratuita) do Azure. Como alternativa, você pode implantá-lo em qualquer site do IIS, desde que esteja disponível para a Internet.
Então, estique os músculos, estale os dedos e vamos ao que interessa!
Comece abrindo o Visual Studio. Estou usando o Visual Studio 2015, mas isso também deve funcionar em versões diferentes. Clique em Arquivo -> Novo Projeto e escolha Visual C# -> Web -> ASP.NET Aplicativo Web.

Insira um nome e um local úteis e clique em OK.
Na próxima tela, você pode escolher um modelo. Estou usando o modelo de API Web no ASP.NET 4.5.2 e comandá-lo para hospedar no Azure:

Além disso, clique em Alterar autenticação e defina-o como Sem autenticação:

Clique em OK nesta tela e em OK na tela Novo Projeto. No pop-up do Azure, você precisa inserir os detalhes do aplicativo Web do Azure. Decidi criar um novo Aplicativo Web do Azure no Leste da Austrália:

Clique em OK e seu projeto será criado. Isso pode levar um minuto, então pegue uma xícara de café para que você esteja pronto para ir para a próxima mordida!
O modelo de API Web padrão contém muitas coisas, a maioria das quais não precisamos. Mas quero me concentrar no lado do Gerenciamento de API do Azure, então não vou limpar o projeto.
O modelo padrão contém um ApiController, chamado ValueController. Pressione F5 e navegue até /api/values. Você deve ver os dois valores de teste:

Em sua API de produção, você provavelmente não deseja começar usando este modelo, e eu aconselho você a começar do zero e adicionar apenas as coisas de que precisa. Mas, no nosso caso, esse modelo padrão funcionará bem.
Um serviço de API Web é um serviço RESTFUL. Uma desvantagem disso é que você não obtém uma definição legível por máquina. O Gerenciamento de API do Azure exigirá uma definição de Swagger ou WADL. Por padrão, isso não está disponível, então vou adicioná-lo agora adicionando Swashbuckle. Abra o Gerenciador de Pacotes NuGet, pesquise Swashbuckle e adicione Swashbuckle.Net45 ao seu projeto:

Clique em F5 e navegue até /swagger para ver isso:

Vamos criar nossa API de Gerenciamento do Azure
Antes que o Azure possa gerenciar nossa API, precisamos publicá-la no Azure. Clique com o botão direito do mouse no projeto de API e selecione Publicar:

Você pode deixar todas as configurações padrão como estão e clicar em Publicar. Aguarde, espere, espere, e seu navegador deve abrir e mostrar seu site público! Uau, uau!


Agora, navegue até /swagger e copie a URL da documentação para a área de transferência ou bloco de notas. No meu caso, foi este URL: http://azureapidemo0955.azurewebsites.net:80/swagger/docs/v1
Em seguida, vá para o Portal do Azure (manage.windowsazure.com) "antigo", pois essa funcionalidade não está disponível no novo portal de visualização (portal.azure.com). Clique em Novo -> Serviços de Aplicativos -> Gerenciamento de API -> Criar:

Escolha um nome, uma assinatura, uma região e clique em Avançar:

Na próxima tela, você precisa inserir os detalhes de contato:

Não precisamos definir as configurações avançadas, pois as configurações padrão (por exemplo, nível de preço do desenvolvedor) são suficientes. Clique na marca de seleção para Concluir.
Você provavelmente quer fazer outra coisa por um tempo, pois isso pode levar até 30 minutos. Pegue algo para comer talvez e volte quando terminar!
Manage the Azure API Management Service
Quando o provisionamento estiver pronto, selecione-o (não clique no título!) e clique em Gerenciar no rodapé. Isso abrirá o Portal de Gerenciamento de API do Azure.

Clique em Importar API, selecione "Do URL" e insira os detalhes:

Eu adicionei a API ao grupo de produtos "Ilimitado". Por algum motivo, recebi o erro:
"Acesso negado devido à falta de chave de assinatura. Certifique-se de incluir a chave de assinatura ao fazer solicitações para uma API" ao testar no Portal de API, pois esse cabeçalho não foi pré-preenchido na época. Clique em Salvar e clique em Portal do Desenvolvedor no cabeçalho:

O que você vê agora é o portal público do desenvolvedor de sua própria API! Este é o ponto de partida para qualquer pessoa que use sua API. As pessoas podem ler a documentação, testar sua API e se inscrever para usá-la.
Clique em API -> Demonstração da API do Azure -> Values_Get – GET 1 para testar o método GetAll. Clique em Enviar e veja a mágica acontecer. O Portal de API do Azure chama sua API Web e mostra o seguinte resultado:

Agora configuramos o básico. A API é gerenciada pelo Gerenciamento de API do Azure, há um portal do desenvolvedor onde os usuários podem entrar e muito mais.
Aproveite a API protegida do nosso controlador MVC
Vou mostrar que posso consumir a API do projeto criado anteriormente e implementar a limitação. Primeiro, adicione o produto "Starter" à API. No Portal de Gerenciamento de API do Azure, clique em APIs -> AzureApiDemo -> Products e adicione Starter.

Em seguida, acesse o Portal do Desenvolvedor e clique em Administrador -> Perfil. Copie a chave primária da assinatura inicial:

Copie esse valor para o bloco de notas.
Nosso projeto de API Web também continha uma parte MVC que renderiza a documentação. Vou adicionar algum código para exibir que podemos chamar de API, gerenciado pelo Gerenciamento de API do Azure.
Em seguida, abra Controllers -> HomeController e substitua o método Index pelo seguinte:
public ActionResult Index()
{
ViewBag.Title = "Home Page";
var wr = WebRequest.CreateHttp("https://azureapidemo.azure-api.net/api/Values");
wr.Headers.Add("Ocp-Apim-Subscription-Key", "b690fce8fe4a44a8b42834c1d040cd31");
using (var response = wr.GetResponse())
{
var html = new StreamReader(response.GetResponseStream()).ReadToEnd();
ViewBag.WebResponse = html;
}
return View();
}
Substitua a chave de assinatura pelo que você copiou anteriormente.
Por último, adicione @ViewBag.WebResponse em algum lugar ao Modo de Exibição em Modos de Exibição -> Home -> Index.cshtml

Se você pressionar F5 agora, verá a resposta da API Web, por meio do Serviço de API de Gerenciamento do Azure.
Mas, quando eu atualizar o navegador 6 vezes, terei uma exceção:

Este é apenas o começo
No post de hoje, o que espero ter mostrado é como você pode publicar uma API na API de Gerenciamento do Azure e proteger seu uso com limitação de uso. Mas isso é apenas o começo – há muito mais que pode ser feito. Aqui estão alguns recursos adicionais que você definitivamente deve observar:

1. Statistics
No Portal do Desenvolvedor, clique em Administrador -> Gerenciar
Isso levará você ao modo de exibição Análise no Portal de Gerenciamento com uma ampla variedade de dados analíticos.

2. Produtos
Abordamos brevemente isso adicionando nossa API ao Produto "Unlimited" e "Starter". Um produto define quem pode usá-lo e com que frequência. Por exemplo, o grupo padrão "Starter" permite que os usuários executem até 5 chamadas/minuto com um máximo de 100/semana.
Consulte o site da Microsoft para obter mais informações.
3. Conecte-se a APIs internas com o Azure Direct Connect
No meu exemplo, publiquei a API em um aplicativo Web público do Azure. Na maioria dos casos, sua API reside em sua rede interna. Com o Azure ExpressRoute, você pode disponibilizar sua API para a API de Gerenciamento do Azure por meio de VPN. Sua API ainda estará oculta do mundo exterior, somente o Azure poderá acessá-la. Veja aqui para mais informações.
Também sugiro que você verifique a Documentação Avançada no site do Azure para obter exemplos ainda mais incríveis.
Se tudo correr bem, você terá aprendido como publicar uma API em um aplicativo Web público do Azure hoje e tomou pelo menos uma xícara de café e um almoço leve. Entre em contato na seção de comentários abaixo e compartilhe seus pensamentos!
Quer criar seus aplicativos de desktop, móveis ou da web com controles de alto desempenho? Baixe o teste gratuito do Ultimate agora e veja o que ele pode fazer por você!