SlideShare une entreprise Scribd logo
1  sur  18
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
Globalcode – Open4education
Uso de REST no mundo
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.
Globalcode – Open4education
REST
Recurso a ser acessado
Formato 1
Formato
2
Formato
3
Formato
4
REST Web Service
URI
Métodos
GET POST PUT DELETE
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
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
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
+
Globalcode – Open4education
Demo, demo, demo, demo…
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);
}
}
Globalcode – Open4education
Exemplo em jQuery
$.ajax({
url: "/api/values",
type: "GET",
dataType: "json",
success: function(data) {
$(data).each(function(index, value){
console.log(index + ') '+ value);
});
}
});
Globalcode – Open4education
Segurança no Web API
HTTP Basic Authentication
HTTP Digest Authentication
Forms/Windows Authentication
OAuth
Globalcode – Open4education
HTTP Basic Authentication
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”
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
Globalcode – Open4education
Demo, demo, demo, demo…
https://gist.github.com/waldyrfelix/5988001
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
Globalcode – Open4education
Exemplo em jQuery
$.ajax({
url: "/api/values",
type: "GET",
dataType: "json",
beforeSend: function(xhr){
xhr.setRequestHeader(
'Authorization', 'Basic d2FsZHlyOjEyMw==');
},
success: function(data) {
$(data).each(function(index, value){
console.log(index + ') '+ value);
});
}
});
https://gist.github.com/waldyrfelix/3983411
Globalcode – Open4education
Dúvidas?

Contenu connexe

Similaire à ASPNET Web API REST

JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EERodrigo Cândido da Silva
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web APIVinicius Mussak
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2Luiz Avila
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2tdc-globalcode
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityInael Rodrigues
 
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...tdc-globalcode
 
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreImplementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreRenato Groff
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaCleber Dantas
 
Modern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticaçãoModern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticaçãoJorge Tressino Rua
 
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloImplementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloRenato Groff
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com SpringMateus Malaquias
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no androidAlexandre Antunes
 
Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.AlexSandro Cruz
 

Similaire à ASPNET Web API REST (20)

ASP.NET Web API
ASP.NET Web APIASP.NET Web API
ASP.NET Web API
 
Asp.net web api
Asp.net web apiAsp.net web api
Asp.net web api
 
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EEJavaOne LATAM 2016 - Combinando AngularJS com Java EE
JavaOne LATAM 2016 - Combinando AngularJS com Java EE
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Introdução ao ASP .NET Web API
Introdução ao ASP .NET Web APIIntrodução ao ASP .NET Web API
Introdução ao ASP .NET Web API
 
Servlets e JSP
Servlets e JSPServlets e JSP
Servlets e JSP
 
#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2#TheDevConf 2018 - spring boot ionic oauth2
#TheDevConf 2018 - spring boot ionic oauth2
 
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
TDC2018SP | Trilha Java Enterprise - Protegendo sua API Spring Boot com OAuth2
 
TDC 2012 Trilha – Android University
TDC 2012 Trilha – Android UniversityTDC 2012 Trilha – Android University
TDC 2012 Trilha – Android University
 
Rest workshop
Rest workshopRest workshop
Rest workshop
 
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
TDC2016SP - Unificando a autenticação e controlando acesso a API com Identity...
 
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto AlegreImplementando APIs REST mais seguras - TDC 2019 - Porto Alegre
Implementando APIs REST mais seguras - TDC 2019 - Porto Alegre
 
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escalaTDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
TDC - Técnicas e recursos para desenvolvimento web em cenários de grande escala
 
Modern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticaçãoModern Apps e o novo panorama de identidade e autenticação
Modern Apps e o novo panorama de identidade e autenticação
 
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São PauloImplementando APIs REST mais seguras - TDC 2019 - São Paulo
Implementando APIs REST mais seguras - TDC 2019 - São Paulo
 
o que é ajax
o que é ajaxo que é ajax
o que é ajax
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
Construindo APIs RESTful com Spring
Construindo APIs RESTful com SpringConstruindo APIs RESTful com Spring
Construindo APIs RESTful com Spring
 
Consumindo dados via web service no android
Consumindo dados via web service no androidConsumindo dados via web service no android
Consumindo dados via web service no android
 
Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.Sua Startup precisa de uma WebAPI.
Sua Startup precisa de uma WebAPI.
 

Plus de Waldyr Felix

Apache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceApache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceWaldyr Felix
 
Kubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do DockerKubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do DockerWaldyr Felix
 
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...Waldyr Felix
 
HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.Waldyr Felix
 
ECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsWaldyr Felix
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsWaldyr Felix
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileWaldyr Felix
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5Waldyr Felix
 
ASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJSASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJSWaldyr Felix
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com RedisWaldyr Felix
 
Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014Waldyr Felix
 
ASP.NET MVC & Entity Framework
ASP.NET MVC & Entity FrameworkASP.NET MVC & Entity Framework
ASP.NET MVC & Entity FrameworkWaldyr Felix
 
Produtividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVCProdutividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVCWaldyr Felix
 
Explorando Microsoft Fakes
Explorando Microsoft FakesExplorando Microsoft Fakes
Explorando Microsoft FakesWaldyr Felix
 
Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012Waldyr Felix
 
ASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic AuthASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic AuthWaldyr Felix
 
ASP.NET Web API no Windows Azure
ASP.NET Web API no Windows AzureASP.NET Web API no Windows Azure
ASP.NET Web API no Windows AzureWaldyr Felix
 
ASP.NET MVC, para sua vida melhorar
ASP.NET MVC, para sua vida melhorarASP.NET MVC, para sua vida melhorar
ASP.NET MVC, para sua vida melhorarWaldyr Felix
 

Plus de Waldyr Felix (20)

Apache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performanceApache Kafka: Comunicando microsserviços com performance
Apache Kafka: Comunicando microsserviços com performance
 
Kubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do DockerKubernetes: Escalando containers do Docker
Kubernetes: Escalando containers do Docker
 
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
A história do LinkApi, como chegamos numa arquitetura para suportar 1 milhão ...
 
HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.HTTP/2. O que você precisa saber a nova versão do HTTP.
HTTP/2. O que você precisa saber a nova versão do HTTP.
 
ECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.jsECMAScript 6 / ECMAScript 2015 no Node.js
ECMAScript 6 / ECMAScript 2015 no Node.js
 
Performance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.jsPerformance do ASP.NET Core, um comparativo com Node.js
Performance do ASP.NET Core, um comparativo com Node.js
 
Ionic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento MobileIonic + Cordova para Desenvolvimento Mobile
Ionic + Cordova para Desenvolvimento Mobile
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 
ASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJSASP.NET SignalR + SPA com AngularJS
ASP.NET SignalR + SPA com AngularJS
 
Escalando Aplicações com Redis
Escalando Aplicações com RedisEscalando Aplicações com Redis
Escalando Aplicações com Redis
 
Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014Sistema de Notificações com SignalR TDC 2014
Sistema de Notificações com SignalR TDC 2014
 
ASP.NET MVC 5.x
ASP.NET MVC 5.xASP.NET MVC 5.x
ASP.NET MVC 5.x
 
ASP.NET MVC & Entity Framework
ASP.NET MVC & Entity FrameworkASP.NET MVC & Entity Framework
ASP.NET MVC & Entity Framework
 
ASP.NET WEB API
ASP.NET WEB APIASP.NET WEB API
ASP.NET WEB API
 
Produtividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVCProdutividade na criação de websites com ASP.NET MVC
Produtividade na criação de websites com ASP.NET MVC
 
Explorando Microsoft Fakes
Explorando Microsoft FakesExplorando Microsoft Fakes
Explorando Microsoft Fakes
 
Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012Usando Scrum com Team Foundation Server 2012
Usando Scrum com Team Foundation Server 2012
 
ASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic AuthASP.NET WebAPI HTTP Basic Auth
ASP.NET WebAPI HTTP Basic Auth
 
ASP.NET Web API no Windows Azure
ASP.NET Web API no Windows AzureASP.NET Web API no Windows Azure
ASP.NET Web API no Windows Azure
 
ASP.NET MVC, para sua vida melhorar
ASP.NET MVC, para sua vida melhorarASP.NET MVC, para sua vida melhorar
ASP.NET MVC, para sua vida melhorar
 

ASPNET Web API REST

  • 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.
  • 4. Globalcode – Open4education REST Recurso a ser acessado Formato 1 Formato 2 Formato 3 Formato 4 REST Web Service URI Métodos GET POST PUT DELETE
  • 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); } }
  • 10. Globalcode – Open4education Exemplo em jQuery $.ajax({ url: "/api/values", type: "GET", dataType: "json", success: function(data) { $(data).each(function(index, value){ console.log(index + ') '+ value); }); } });
  • 11. Globalcode – Open4education Segurança no Web API HTTP Basic Authentication HTTP Digest Authentication Forms/Windows Authentication OAuth
  • 12. Globalcode – Open4education HTTP Basic Authentication
  • 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
  • 15. Globalcode – Open4education Demo, demo, demo, demo… https://gist.github.com/waldyrfelix/5988001
  • 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
  • 17. Globalcode – Open4education Exemplo em jQuery $.ajax({ url: "/api/values", type: "GET", dataType: "json", beforeSend: function(xhr){ xhr.setRequestHeader( 'Authorization', 'Basic d2FsZHlyOjEyMw=='); }, success: function(data) { $(data).each(function(index, value){ console.log(index + ') '+ value); }); } }); https://gist.github.com/waldyrfelix/3983411