O documento discute o uso de REST com ASP.NET Web API. Explica que o REST permite a entrega de conteúdo para vários dispositivos e formatos através da internet. Também discute porque o ASP.NET Web API é um bom framework para desenvolver APIs RESTful, como ele é compatível com vários dispositivos e linguagens de programação e suporta autenticação.
1. Globalcode – Open4education
Trilha - .NET
REST na plataforma Microsoft com ASP.NET Web API
Waldyr Felix
MVP, MCPD, MCP e Arquiteto de Software
http://waldyrfelix.net
@WaldyrFelix
3. Globalcode – Open4education
Entrega de conteúdo
em vários dispositivos,
na prática basta um
dispositivo ter acesso
a internet para poder
consumir um serviço REST.
5. Globalcode – Open4education
Porque ASP.NET Web API
Precisamos entregar conteúdo para múltiplos dispositivos
A web está cada vez mais baseada no browser e menos no
server
É mais fácil escalar usando REST
Abraça o HTTP, não precisamos de novos protocolos
Mesmo modelo de programação do ASP.NET MVC
Compatível com os frameworks de Single Page Application
6. Globalcode – Open4education
Um framework atual
• Compatibilidade com qualquer dispositivo móvel
• Pode ser facilmente consumido por qualquer linguagem
de programação
• Use JSON preferencialmente
• Suporta vários tipos de autenticação
7. Globalcode – Open4education
ASP.NET Web API & OData
OData é um padrão de consulta de dados na web
Dá maior flexibilidade na busca dos dados
É nativo no ASP.NET WebAPI
+
9. Globalcode – Open4education
Exemplo em C#
using (var client = new HttpClient())
{
var strings = await client.GetAsync("/api/values");
var strResult = await strings.Content.ReadAsStringAsync();
var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<string[]>(strResult);
foreach (var s in result)
{
Console.WriteLine(s);
}
}
13. Globalcode – Open4education
Implementando a autenticação
Adicionar comportamento ao pipeline do ASP.NET Web API
A autenticação deve seguir os seguintes passos
Verificar tipo de autenticação (Basic)
Converter de Base 64 para texto limpo
Extrair o usuário e senha
Verificar se o usuário e senha são válidos
Caso os dados estejam ok, então permite a requisição
Caso os dados não sejam informados ou estejam incorretos, então
deve enviar a solicitação de autenticação:
WWW-Authenticate: Basic realm=“waldyrfelix.net”
14. Globalcode – Open4education
Delegating Handler
Serve para fazer pequenas ações dentro do
pipeline do ASP.NET Web API
É possível ter um Delegating Handler para fazer a
autenticação HTTP Basic ou qualquer outra
Herdar a classe DelegatingHandler
Implementar o método SendAsync
Adicionar o handler nas configurações do Web API
16. Globalcode – Open4education
Exemplo em C#
using (var client = new HttpClient())
{
client.DefaultRequestHeaders
.Add("Authorization", "Basic d2FsZHlyOjEyMw==");
var strings = await client.GetAsync("/api/values");
var strResult = await strings.Content.ReadAsStringAsync();
var serializer = new JavaScriptSerializer();
var result = serializer.Deserialize<string[]>(strResult);
foreach (var s in result)
{
Console.WriteLine(s);
}
}
https://gist.github.com/waldyrfelix/3983405