SlideShare una empresa de Scribd logo
Aplicaciones
RestFul con
Asp.net Core
Germán Küber
.Net Developer
http://germankuber.com.ar
@germankuber
@netbaires
Net-Baires
http://slack.net-baires.com
https://www.meetup.com/es-ES/Net-Baires
https://github.com/Net-Baires
@netbaires
Representational State Transfer pretende evocar una imagen de
cómo se comporta una aplicación web bien diseñada: Una red de
páginas web.
...... donde el usuario avanza a través de una aplicación
seleccionando enlaces (transiciones de estado)
...... que da como resultado la siguiente página (que representa el
siguiente estado de la aplicación) que se transfiere al usuario y se
procesa para su uso
Roy Fielding
http://bit.ly/1rbtZik
¿ Que es Rest ?
• Rest es un estilo de arquitectura
• No es un estándar
• Nosotros usamos estándares para
implementarlo
• Rest es agnóstico al protocolo
Restricciones de Rest
• REST está definido por 6
restricciones (una opcional)
• Una restricción es una
decisión de diseño que
puede tener impactos
positivos y negativos
Restricciones de Rest
Client-Server
Cliente y servidor están
separados
(Cliente y servidor
pueden evolucionar por
separado)
Statelessness
Estado está contenido
dentro de la solicitud
Cacheable
Cada
respuesta/mensaje
debe indicar
explícitamente si se
puede almacenar en
caché o no
Restricciones de Rest
Layered System
El cliente no puede
saber a qué capa está
conectado
Code on
Demand (optional)
Servidor puede
extender la
funcionalidad del
cliente
Uniform Interface
API y los consumidores
comparten una sola
interfaz, técnica: URI,
Method, Media Type
Interface Uniforme
• Un recurso está conceptualmente separado de su
representación
• Tipos de medios de representación:
• application / json
• application / xml
• Custom
• ...
Interface Uniforme
Manipulación de recursos a través de representaciones
• Representación + metadatos deberían ser
suficientes para modificar o borrar el recurso
Interface Uniforme
Mensaje auto descriptivo
• Cada mensaje debe incluir información suficiente
para describir cómo procesar el mensaje
Interface Uniforme
Hipermedia como el motor del estado de aplicación
(HATEOAS)-
• Hypermedia es una generalización de hipertexto
(enlaces)
• Conduce cómo consumir y usar la API
• Permite una API auto-documentada
• La mayoría de las APIs "RESTful" no son realmente
REST
• ...... pero eso no los hace malas APIs, siempre y
cuando usted entienda los posibles trade-offs
Un sistema sólo se considera RESTful cuando se
adhiere a todas las restricciones requeridas
El modelo de Richardson Maturity
POST (Solicito data)
http://host/myapi
POST (Creo un recurso)
http://host/myapi
El protocolo HTTP se utiliza para la
interacción remota
El resto del protocolo no se utiliza
como debe ser
Implementación estilo RPC (SOAP, a
menudo visto cuando se utiliza
WCF)
Nivel 0 (The Swamp of POX)
El modelo de Richardson Maturity
POST
http://host/api/authors
POST
http://host/api/authors/{id}
Cada recurso se asigna a un URI
Los métodos HTTP no se utilizan
como deben ser
Resultados en la reducción de la
complejidad
Nivel 1 (Resources)
El modelo de Richardson Maturity
GET
http://host/api/authors 200
Ok (authors)
POST (author representation)
http://host/api/authors 201
Created (author)
Se utilizan los verbos HTTP
correctos
Se utilizan códigos de estado
correctos
Elimina variaciones innecesarias
Nivel 2 (Verbs)
El modelo de Richardson Maturity
GET
http://host/api/authors
200 Ok (authors + links that
drive application state)
La API admite Hypermedia como el
motor del estado de aplicación
(HATEOAS)
Introduce la posibilidad de
descubrir su contenido
Nivel 3 (Hypermedia)
Asp.net Core
• Open Source
• Multi plataforma
• Escalable
• Provee middleware
• No provee una api RestFul out of
the box
Nombre de recursos
Recursos no verbos
• api/getauthors
• GET api/authors
• GET api/authors/{authorId}
Sustantivos significativos
Nombre de recursos
Representar jerarquía al nombrar los recursos
• api/authors/{authorId}/books
• api/authors/{authorId}/books/{bookId}
Nombre de recursos
Filters, sorting orders, ... No son recursos
• api/authors/orderby/name
• api/authors?orderby=name
Nombre de recursos
Rest nos habla del contrato externo
• El resto de las capas carece de importancia
• El recurso es conceptualmente diferente al
que esta almacenado en la DB
Como interactuar con nuestros recursos
Nombre de recursos
Modelos externos
!=
Entity Model
Nombre de recursos
Modelos externos
!=
Business Model
!=
Entity Model
Http Status Code
Level 400 – Error de cliente
400 – Bad request
401 –Unauthorized
403 – Forbidden
404 – Not found
Nivel 200 Success
200 – Ok
201 – Created
204 – No content
Http Status Code
Nivel 500 Error
servidor
500 – Internal server
error
Nivel 400 – Error de cliente
405 – Method not allowed
406 – Not acceptable
409 - Conflict
415 – Unsupported media type
422 – Unprocessable entity
Nombre de recursos
Retornar formato predeterminado
Utilizar siempre la representación
conveniente
Return 406 – Not acceptable
El formato se solicita mediante Accept
header
- application/json
- application/xml
- …

Más contenido relacionado

DOCX
Arquitectura Rest
PPTX
REST, JERSEY & SOAP
PDF
API REST conceptos (Rails-api)
PPTX
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
PPTX
Introducción a REST - SymfonyVLC
PPTX
Seminario IV: REST & Jersey
PPTX
Arquitectura REST
Arquitectura Rest
REST, JERSEY & SOAP
API REST conceptos (Rails-api)
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVC
Introducción a REST - SymfonyVLC
Seminario IV: REST & Jersey
Arquitectura REST

La actualidad más candente (8)

PDF
Android web services - Spring Android
PPSX
Java Web Services - REST
PDF
Desarrollo web con_asp.net 2.1
PPTX
Java Web Services - Introduccion
PDF
Introducción a las API's Rest
PPTX
Anypoint b2b
Android web services - Spring Android
Java Web Services - REST
Desarrollo web con_asp.net 2.1
Java Web Services - Introduccion
Introducción a las API's Rest
Anypoint b2b
Publicidad

Similar a Api rest ful (20)

PDF
REST - deSymfony2012
PDF
WORKSHOP I: Introducción a API REST
PPTX
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
PDF
RESTful Para todos by Diego Sapriza
PPTX
Fundamentos para el diseño de una RESTful API pragmática
PPTX
S4-PD2-2.2. REST
PPTX
Introducción a ASP.NET Web API
PDF
Paper ieee
PPTX
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
PDF
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
PDF
Rest clase 4 - curso front-end 2014 - open webinars
PPTX
S4-PD2-REST-REST FULL
ODP
Documertar APIs - Meetup.js
PDF
PPTX
Arquitectura API Rest.
PPTX
S7-DAW-2022S1.pptx
PDF
API como SaaS
PDF
Servicios REST - PucelaTechDay
REST - deSymfony2012
WORKSHOP I: Introducción a API REST
10-Unidad 3: Diseños de Vista-3.2 Usos Web Services
RESTful Para todos by Diego Sapriza
Fundamentos para el diseño de una RESTful API pragmática
S4-PD2-2.2. REST
Introducción a ASP.NET Web API
Paper ieee
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
SOA Latam Workshop: Comparison Dropwizard, ratpack & Spring Boot
Rest clase 4 - curso front-end 2014 - open webinars
S4-PD2-REST-REST FULL
Documertar APIs - Meetup.js
Arquitectura API Rest.
S7-DAW-2022S1.pptx
API como SaaS
Servicios REST - PucelaTechDay
Publicidad

Más de Germán Küber (20)

PPTX
Explorando el Diseño de la Memoria en Rust
PPTX
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
PPTX
Mev Rapido.pptx
PPTX
Que son los smart contracts.pptx
PPTX
De 0 a blockchain developer en 3 meses
PPTX
Patrones funcionales
PPTX
Patrones de diseño en solidity
PPTX
Vertical slice architecture
PPTX
De 0 a blockchain developer en 3 meses
PPTX
Diamon pattern presentation
PPTX
Patrones funcionales
PPTX
Defensive code
PPTX
Programación Funcional C#
PPTX
Unit testing consejos
PPTX
Defensive code C#
PPTX
Event sourcing
PPTX
C sharp 8
PPTX
Arquitectura en aplicaciones Angular y buenas practicas.
PPTX
Un mundo sin if. generics al rescate
PPTX
Azure 360º para Desarrolaldores
Explorando el Diseño de la Memoria en Rust
De Código a Ejecución: El Papel Fundamental del MSIL en .NET
Mev Rapido.pptx
Que son los smart contracts.pptx
De 0 a blockchain developer en 3 meses
Patrones funcionales
Patrones de diseño en solidity
Vertical slice architecture
De 0 a blockchain developer en 3 meses
Diamon pattern presentation
Patrones funcionales
Defensive code
Programación Funcional C#
Unit testing consejos
Defensive code C#
Event sourcing
C sharp 8
Arquitectura en aplicaciones Angular y buenas practicas.
Un mundo sin if. generics al rescate
Azure 360º para Desarrolaldores

Último (20)

PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
Diapositiva proyecto de vida, materia catedra
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
PDF
clase auditoria informatica 2025.........
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPT
introduccion a las_web en el 2025_mejoras.ppt
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PPTX
Presentación de Redes de Datos modelo osi
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
la-historia-de-la-medicina Edna Silva.pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PDF
Maste clas de estructura metálica y arquitectura
PPT
El-Gobierno-Electrónico-En-El-Estado-Bolivia
historia_web de la creacion de un navegador_presentacion.pptx
CyberOps Associate - Cisco Networking Academy
Presentación PASANTIAS AuditorioOO..pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Influencia-del-uso-de-redes-sociales.pdf
Diapositiva proyecto de vida, materia catedra
informe_fichas1y2_corregido.docx (2) (1).pdf
clase auditoria informatica 2025.........
Power Point Nicolás Carrasco (disertación Roblox).pptx
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
introduccion a las_web en el 2025_mejoras.ppt
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Presentación de Redes de Datos modelo osi
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
la-historia-de-la-medicina Edna Silva.pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
Maste clas de estructura metálica y arquitectura
El-Gobierno-Electrónico-En-El-Estado-Bolivia

Api rest ful

  • 1. Aplicaciones RestFul con Asp.net Core Germán Küber .Net Developer http://germankuber.com.ar @germankuber @netbaires
  • 3. Representational State Transfer pretende evocar una imagen de cómo se comporta una aplicación web bien diseñada: Una red de páginas web. ...... donde el usuario avanza a través de una aplicación seleccionando enlaces (transiciones de estado) ...... que da como resultado la siguiente página (que representa el siguiente estado de la aplicación) que se transfiere al usuario y se procesa para su uso Roy Fielding http://bit.ly/1rbtZik
  • 4. ¿ Que es Rest ? • Rest es un estilo de arquitectura • No es un estándar • Nosotros usamos estándares para implementarlo • Rest es agnóstico al protocolo
  • 5. Restricciones de Rest • REST está definido por 6 restricciones (una opcional) • Una restricción es una decisión de diseño que puede tener impactos positivos y negativos
  • 6. Restricciones de Rest Client-Server Cliente y servidor están separados (Cliente y servidor pueden evolucionar por separado) Statelessness Estado está contenido dentro de la solicitud Cacheable Cada respuesta/mensaje debe indicar explícitamente si se puede almacenar en caché o no
  • 7. Restricciones de Rest Layered System El cliente no puede saber a qué capa está conectado Code on Demand (optional) Servidor puede extender la funcionalidad del cliente Uniform Interface API y los consumidores comparten una sola interfaz, técnica: URI, Method, Media Type
  • 8. Interface Uniforme • Un recurso está conceptualmente separado de su representación • Tipos de medios de representación: • application / json • application / xml • Custom • ...
  • 9. Interface Uniforme Manipulación de recursos a través de representaciones • Representación + metadatos deberían ser suficientes para modificar o borrar el recurso
  • 10. Interface Uniforme Mensaje auto descriptivo • Cada mensaje debe incluir información suficiente para describir cómo procesar el mensaje
  • 11. Interface Uniforme Hipermedia como el motor del estado de aplicación (HATEOAS)- • Hypermedia es una generalización de hipertexto (enlaces) • Conduce cómo consumir y usar la API • Permite una API auto-documentada
  • 12. • La mayoría de las APIs "RESTful" no son realmente REST • ...... pero eso no los hace malas APIs, siempre y cuando usted entienda los posibles trade-offs Un sistema sólo se considera RESTful cuando se adhiere a todas las restricciones requeridas
  • 13. El modelo de Richardson Maturity POST (Solicito data) http://host/myapi POST (Creo un recurso) http://host/myapi El protocolo HTTP se utiliza para la interacción remota El resto del protocolo no se utiliza como debe ser Implementación estilo RPC (SOAP, a menudo visto cuando se utiliza WCF) Nivel 0 (The Swamp of POX)
  • 14. El modelo de Richardson Maturity POST http://host/api/authors POST http://host/api/authors/{id} Cada recurso se asigna a un URI Los métodos HTTP no se utilizan como deben ser Resultados en la reducción de la complejidad Nivel 1 (Resources)
  • 15. El modelo de Richardson Maturity GET http://host/api/authors 200 Ok (authors) POST (author representation) http://host/api/authors 201 Created (author) Se utilizan los verbos HTTP correctos Se utilizan códigos de estado correctos Elimina variaciones innecesarias Nivel 2 (Verbs)
  • 16. El modelo de Richardson Maturity GET http://host/api/authors 200 Ok (authors + links that drive application state) La API admite Hypermedia como el motor del estado de aplicación (HATEOAS) Introduce la posibilidad de descubrir su contenido Nivel 3 (Hypermedia)
  • 17. Asp.net Core • Open Source • Multi plataforma • Escalable • Provee middleware • No provee una api RestFul out of the box
  • 18. Nombre de recursos Recursos no verbos • api/getauthors • GET api/authors • GET api/authors/{authorId} Sustantivos significativos
  • 19. Nombre de recursos Representar jerarquía al nombrar los recursos • api/authors/{authorId}/books • api/authors/{authorId}/books/{bookId}
  • 20. Nombre de recursos Filters, sorting orders, ... No son recursos • api/authors/orderby/name • api/authors?orderby=name
  • 21. Nombre de recursos Rest nos habla del contrato externo • El resto de las capas carece de importancia • El recurso es conceptualmente diferente al que esta almacenado en la DB
  • 22. Como interactuar con nuestros recursos
  • 23. Nombre de recursos Modelos externos != Entity Model
  • 24. Nombre de recursos Modelos externos != Business Model != Entity Model
  • 25. Http Status Code Level 400 – Error de cliente 400 – Bad request 401 –Unauthorized 403 – Forbidden 404 – Not found Nivel 200 Success 200 – Ok 201 – Created 204 – No content
  • 26. Http Status Code Nivel 500 Error servidor 500 – Internal server error Nivel 400 – Error de cliente 405 – Method not allowed 406 – Not acceptable 409 - Conflict 415 – Unsupported media type 422 – Unprocessable entity
  • 27. Nombre de recursos Retornar formato predeterminado Utilizar siempre la representación conveniente Return 406 – Not acceptable El formato se solicita mediante Accept header - application/json - application/xml - …

Notas del editor

  • #3: Separa a las buenas aplicaciones de las excelentes aplicaciones Errores de escalabilidad no son intuitivos Una aplicacion escalable comienza en su diseño