SlideShare una empresa de Scribd logo
1 de 12
Web Api
Preguntas
• WebAPI
• REST
• MVC
• WCF
Que es Web Api
• Es un API que permite implementar servicios HTTP
• Particularmente se utiliza para servicios web basados en la
arquitectura REST
• Es una librería .Net que permite implementar servicios RESTful en
.Net
• MVC es para retornar HTML, trabajar con forms y browsers – WebAPI
es para crear servicios y retornar json / xml
• Es ideal para integrar dispositivos móviles
Que es REST: Representational State
Transfer
• Es un estilo de arquitectura.
• Orientado a recursos (sustantivos)
• Utiliza las URIs para identificar recursos y los verbos HTTP para
manipularlos
• GET, PUT, POST, DELETE

• La respuesta es via HTTP response codes estandars
• 200 OK, 201 CREATED, 401 UNAUTHORIZED, ETC.

• El URI o el mensaje de request no incluye un verbo.
• Hypermedia: el request a un recurso devuelve los URIs para acceder o
manipular otros recursos
RESTful Services
• NO es RESTful

• http://server/hrapp/getemployee?id=12345
• http://server/hrapp/employee?id=12345&action=GET
• http://server/hrapp/employee and the request message determines the action to be
carried out.

• Implementado con RESTful
•
•
•
•
•
•
•

http://server/hrapp/employees/12345
HTTP POST crea el employee 12345
HTTP GET obtiene el employee 12345
HTTP PUT modifica el employee 12345
HTTP DELETE borra el employee
Los datos vuelven codificados en JSON / XML
Los errores se devuelven con status code de HTTP (200 ok, 401 not authorized, 404
not-found, etc)
Como crear un Web API
• Crear un proyecto MVC4 usando el template Web API
• Crear un controlador (controller)
• Deriva de ApiController

• Agregar acciones a la clase controller
• Se puede implementar WebAPI en cualquier tipo de proyecto
(console, self-host, etc)
Routing en Web API
• Se pueden utilizar los nombres de los controladores y de las acciones
para routear Web API requests
• O también se pueden utilizar atributos para controlar el mapeo de los
requests a acciones en los controladores
• HttpGet, HttpPut, HttpPost, HttpDelete
• AcceptVerbs
• ActionName
Formatos de respuesta
• WebAPI puede devolver JSON o XML
• WebAPI permite que el cliente especifique el formato de respuesta en
el HTTP header
• Se pueden crear “MediaTypeFormatters” para devolver distintos tipos
de datos – por ejemplo una imagen
JSON
• Request Sent
POST /api/employees HTTP/1.1
Content-Type: application/json; charset=utf-8
Content-Length: 49
{"Name":"John Q Law", "Department":"Enforcement"}
• Response Received
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"Department":"Enforcement","Id":"123","Name":"John Q Law"}
XML

• Request Sent
POST /api/employees HTTP/1.1
Content-Type: application/xml; charset=utf-8
Content-Length: 80
<Employee><Name>John Q
Law</Name><Department>Enforcement</Department></Employee>
• Response Received
HTTP/1.1 200 OK
Content-Type: application/xml; charset=utf-8
<?xml version="1.0" encoding="utf-8"?><Employee
xmlns:xsi=http://www.w3.org/2001/XMLSchemainstance
xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Id>123</Id><Name>John Q
Law</Name><Department>Enforcement</Department></Employee>
WCF vs WebAPI
• WCF permite implementar un servicio sin definir el mecanismo de
transporte, el formato de los paquetes, el protocolo, etc.
• WCF es mas flexible y mas complejo.
• WCF soporta HTTP, TCP, Namepipes (comunicación entre procesos),
etc.
• WebAPI es para implementar HTTP con JSON / XML.
• Si solo se va a necesitar HTTP con JSON / XML conviene usar WebAPI.
• Si existe la posibilidad de que los servicios se expongan o consuman
de otra manera conviene WCF.
Mas info
Documentación
http://www.asp.net/web-api
• Fiddler
http://fiddler2.com/home
• Web API Test Client
http://blogs.msdn.com/b/yaohuang1/archive/2012/12/02/adding-asimple-test-client-to-asp-net-web-api-help-page.aspx
• Nuget Package
“A simple Test Client to ASP.NET Web API”

Más contenido relacionado

Más de .NET UY Meetup

.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup
 
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ....NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup
 

Más de .NET UY Meetup (8)

.NET UY Meetup 7 - CLR Memory by Fabian Alves
.NET UY Meetup 7 - CLR Memory by Fabian Alves.NET UY Meetup 7 - CLR Memory by Fabian Alves
.NET UY Meetup 7 - CLR Memory by Fabian Alves
 
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
.NET UY Meetup 6 - Integrando con C/C++ por medio de P/Invoke by Juan Ramirez
 
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ....NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
.NET UY Meetup 6 - Xamarin: Desarrollando apps nativas para iOS & Android en ...
 
.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta
.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta
.NET UY Meetup 5 - MVC For Human Beings by Leonardo Botta
 
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
.NET UY Meetup 4 - AOP & PostSharp by Bruno Bologna & Fabian Fernandez
 
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona....NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
.NET UY Meetup 4 - Windows 8: Lecciones Aprendidas by Alvaro Regalado & Leona...
 
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
.NET UY Meetup 3 - El Poder de la Visión by Ariel Erlijman
 
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
.NET UY Meetup 3 - Presentaciones Efectivas by Ariel Erlijman
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (15)

presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 

.NET UY Meetup 5 - REST in peace with Web API by Fabian Alves

  • 3. Que es Web Api • Es un API que permite implementar servicios HTTP • Particularmente se utiliza para servicios web basados en la arquitectura REST • Es una librería .Net que permite implementar servicios RESTful en .Net • MVC es para retornar HTML, trabajar con forms y browsers – WebAPI es para crear servicios y retornar json / xml • Es ideal para integrar dispositivos móviles
  • 4. Que es REST: Representational State Transfer • Es un estilo de arquitectura. • Orientado a recursos (sustantivos) • Utiliza las URIs para identificar recursos y los verbos HTTP para manipularlos • GET, PUT, POST, DELETE • La respuesta es via HTTP response codes estandars • 200 OK, 201 CREATED, 401 UNAUTHORIZED, ETC. • El URI o el mensaje de request no incluye un verbo. • Hypermedia: el request a un recurso devuelve los URIs para acceder o manipular otros recursos
  • 5. RESTful Services • NO es RESTful • http://server/hrapp/getemployee?id=12345 • http://server/hrapp/employee?id=12345&action=GET • http://server/hrapp/employee and the request message determines the action to be carried out. • Implementado con RESTful • • • • • • • http://server/hrapp/employees/12345 HTTP POST crea el employee 12345 HTTP GET obtiene el employee 12345 HTTP PUT modifica el employee 12345 HTTP DELETE borra el employee Los datos vuelven codificados en JSON / XML Los errores se devuelven con status code de HTTP (200 ok, 401 not authorized, 404 not-found, etc)
  • 6. Como crear un Web API • Crear un proyecto MVC4 usando el template Web API • Crear un controlador (controller) • Deriva de ApiController • Agregar acciones a la clase controller • Se puede implementar WebAPI en cualquier tipo de proyecto (console, self-host, etc)
  • 7. Routing en Web API • Se pueden utilizar los nombres de los controladores y de las acciones para routear Web API requests • O también se pueden utilizar atributos para controlar el mapeo de los requests a acciones en los controladores • HttpGet, HttpPut, HttpPost, HttpDelete • AcceptVerbs • ActionName
  • 8. Formatos de respuesta • WebAPI puede devolver JSON o XML • WebAPI permite que el cliente especifique el formato de respuesta en el HTTP header • Se pueden crear “MediaTypeFormatters” para devolver distintos tipos de datos – por ejemplo una imagen
  • 9. JSON • Request Sent POST /api/employees HTTP/1.1 Content-Type: application/json; charset=utf-8 Content-Length: 49 {"Name":"John Q Law", "Department":"Enforcement"} • Response Received HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 {"Department":"Enforcement","Id":"123","Name":"John Q Law"}
  • 10. XML • Request Sent POST /api/employees HTTP/1.1 Content-Type: application/xml; charset=utf-8 Content-Length: 80 <Employee><Name>John Q Law</Name><Department>Enforcement</Department></Employee> • Response Received HTTP/1.1 200 OK Content-Type: application/xml; charset=utf-8 <?xml version="1.0" encoding="utf-8"?><Employee xmlns:xsi=http://www.w3.org/2001/XMLSchemainstance xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Id>123</Id><Name>John Q Law</Name><Department>Enforcement</Department></Employee>
  • 11. WCF vs WebAPI • WCF permite implementar un servicio sin definir el mecanismo de transporte, el formato de los paquetes, el protocolo, etc. • WCF es mas flexible y mas complejo. • WCF soporta HTTP, TCP, Namepipes (comunicación entre procesos), etc. • WebAPI es para implementar HTTP con JSON / XML. • Si solo se va a necesitar HTTP con JSON / XML conviene usar WebAPI. • Si existe la posibilidad de que los servicios se expongan o consuman de otra manera conviene WCF.
  • 12. Mas info Documentación http://www.asp.net/web-api • Fiddler http://fiddler2.com/home • Web API Test Client http://blogs.msdn.com/b/yaohuang1/archive/2012/12/02/adding-asimple-test-client-to-asp-net-web-api-help-page.aspx • Nuget Package “A simple Test Client to ASP.NET Web API”