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.