Web api, más allá del 'hola mundo'
WebApi,
más allá del “Hola
mundo”
19/10/2017
Hugo Biarge
Development Advisor at Plain Concepts
hbiarge@plainconcepts.com
@hbiarge
www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid
T. (+34) 91 5346 836
BILBAO
Ledesma 10-bis, Planta 3 dpto 2
48001 Bilbao
T. (+34) 94 6073 371
BARCELONA
Av. Josep Tarradellas 10, 6º 1ª
08029 Barcelona
T. (+34) 93 3607 114
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
1511, Third Ave
Seattle WA 98101. USA
T. (+1) 206 708 1285
Agenda
Organización de proyectos
Inyección de dependencias
Autenticación y autorización
Documentación del api
Versionado
Implementación de los métodos de acción (CQRS)
Test de integración y unitarios
https://github.com/hbiarge/WebApi-Sample
Web api, más allá del 'hola mundo'
Organización de proyectos
Api como proyecto de librería de clases
• Reutilizable en múltiples hosts
• Perdemos tooling 
Inyección de dependencias
DependencyResolvers
• Elige tu contenedor de IoC
Conoce la raíz de composición de WebApi
Cómo gestiona IDisposable tu contenedor?
Piensa en el ciclo de vida de tus dependencias
Autenticación y autorización
Diferencia entre 401 y 403
• Sobrescribe la implementación por defecto
ClaimsPrincipal tiene más información que los roles
• Utiliza los claims que necesites para tomar decisiones sobre autorización
https://github.com/DavidParks8/Owin-Authorization
Documenta tu API
Swagger
• Estandar de facto
Gran ecosistema
• Genaradores de código para clientes (C#, TypeScript, JS, …)
https://github.com/domaindrivendev/Swashbuckle
Versiona tu API
Permite evolucionar más fácilmente un API pública con clientes
Diferentes estrategias
• Url/query string
• Media Type
https://github.com/Microsoft/aspnet-api-versioning
Implementación de los métodos de acción
Separación de lecturas y escrituras
• CQRS
Comands and queries
• Micro-ORM en las queries
• DDD en los comandos
MediatR
• Bus en memoria
https://github.com/jbogard/MediatR
Testea tu API
Muy fácil montar integración
• TestServer de Owin
• TestServer es un host más de tu API
• End-2-End con base de datos
Haz test unitarios donde corresponda
• No pruebes la infraestructura
• Prueba la lógica
Thanks!
Hugo Biarge
hbiarge@plainconcepts.com
@hbiarge
www.plainconcepts.com
MADRID
Paseo de la Castellana 163, 10º
28046 Madrid
T. (+34) 91 5346 836
BILBAO
Ledesma 10-bis, Planta 3 dpto 2
48001 Bilbao
T. (+34) 94 6073 371
BARCELONA
Av. Josep Tarradellas 10, 6º 1ª
08029 Barcelona
T. (+34) 93 3607 114
SEVILLA
Avenida de la innovación s/n
Edificio Renta Sevilla, 3º A
41020 Sevilla
DUBAI
Dubai Internet City. Building 1
73030 Dubai. EAU
T. (+971) 4 551 6653
LONDON
Impact Hub Kings Cross
24B York Way, N1 9AB
London. UK
SEATTLE
1511, Third Ave
Seattle WA 98101. USA
T. (+1) 206 708 1285

Más contenido relacionado

PDF
Autenticación en aplicaciones .Net web y nativas
PDF
Diseño de APIs con OpenAPI
PDF
Gobierno de apis
PPTX
Introducción a ASP.NET Web API
PDF
Foro innovacion beeva 28 01-2014 -open business and the business of APIs
PPTX
Como desarrollar una api en .NET Core como un autentico Avenger
PPTX
Fundamentos para el diseño de una RESTful API pragmática
ODP
Documertar APIs - Meetup.js
Autenticación en aplicaciones .Net web y nativas
Diseño de APIs con OpenAPI
Gobierno de apis
Introducción a ASP.NET Web API
Foro innovacion beeva 28 01-2014 -open business and the business of APIs
Como desarrollar una api en .NET Core como un autentico Avenger
Fundamentos para el diseño de una RESTful API pragmática
Documertar APIs - Meetup.js

Similar a Web api, más allá del 'hola mundo' (20)

PDF
WORKSHOP I: Introducción a API REST
PPTX
RAML
PPTX
Azure API Management
PPTX
Taller definición de apis
ODP
Desarrollando un API con REST
PDF
REST - deSymfony2012
PPTX
Define y desarrolla tu primera api
PDF
RESTful Para todos by Diego Sapriza
PDF
ASP.NET MVC - introduccion al web api
PPTX
15-TEMA: 4. INTRODUCCION A LAS ARQUITECTURASWEB Contenidos: 4.1 Dao 4.2 Mv...
PPTX
Arquitectura API Rest.
PDF
Tecnologías para microservicios
PDF
OpenAPI 3.0.2
PDF
Programando WebApps con APIs
PPTX
Desarrollo dirigido por modelo de servicios web REST
PPTX
Mada metodología ágil de desarrollo de apis
PPTX
Api rest ful
PPTX
S7-DAW-2022S1.pptx
WORKSHOP I: Introducción a API REST
RAML
Azure API Management
Taller definición de apis
Desarrollando un API con REST
REST - deSymfony2012
Define y desarrolla tu primera api
RESTful Para todos by Diego Sapriza
ASP.NET MVC - introduccion al web api
15-TEMA: 4. INTRODUCCION A LAS ARQUITECTURASWEB Contenidos: 4.1 Dao 4.2 Mv...
Arquitectura API Rest.
Tecnologías para microservicios
OpenAPI 3.0.2
Programando WebApps con APIs
Desarrollo dirigido por modelo de servicios web REST
Mada metodología ágil de desarrollo de apis
Api rest ful
S7-DAW-2022S1.pptx
Publicidad

Último (20)

PPT
Colores y Señales de Seguridad - NOM-STPS-026.ppt
PDF
Manual ARIEL JGD-2 - compresor de gas para la industria
PPTX
Derecho Constitucional . Poder y principios del sistema republicano de poder ...
PPTX
Unidad 1 INTRODUCCION al cent 11 2025.pptx
PDF
Conceptos Básicos Presentación 12 de marzo.pdf
PPTX
manufactura integrada por computadora II
DOCX
P.CELI.10 OPERACIÓN DE BOMBA DE AGUA.docx
PDF
PRL ALTURA, MANUAL PARA PREVENCION DE RIESGOS LABORALES EN ALTURA
PPTX
PRESENTACION Pavimentos. Conceptos Básicos, Estudio de TránsitoI-1.pptx
PPTX
MEDIDAS ELECTRICAS electricas de tecnica
PPTX
1.definiciones para Trabajos en Caliente.pptx
PPT
fertilidaddelsueloysudiagnstico-101013111502-phpapp02.ppt
PPTX
Unidad 15 Radiaciones ionizantes y No ionizantes.pptx
PPTX
ETICA PROFESIONAL PARA MOTIVACION PERSONAL
PDF
SISTEMAS INTEGRADOS DE GESTION ISO 9/14/45
PPTX
CRIPTOGRAFÍA BASICA EN POWER POINT - CS
PPTX
Investigación de Operaciones I universidad nacional de Piura.pptx
PDF
REALITY "Vive como quieras ser" Un año sobre el terreno creando un escenario ...
PPTX
EVALUACIÓN DE IMPACTO AMBIENTAL PARA PROYECTOS.pptx
PDF
electronica y seguridad informatica presentaciones
Colores y Señales de Seguridad - NOM-STPS-026.ppt
Manual ARIEL JGD-2 - compresor de gas para la industria
Derecho Constitucional . Poder y principios del sistema republicano de poder ...
Unidad 1 INTRODUCCION al cent 11 2025.pptx
Conceptos Básicos Presentación 12 de marzo.pdf
manufactura integrada por computadora II
P.CELI.10 OPERACIÓN DE BOMBA DE AGUA.docx
PRL ALTURA, MANUAL PARA PREVENCION DE RIESGOS LABORALES EN ALTURA
PRESENTACION Pavimentos. Conceptos Básicos, Estudio de TránsitoI-1.pptx
MEDIDAS ELECTRICAS electricas de tecnica
1.definiciones para Trabajos en Caliente.pptx
fertilidaddelsueloysudiagnstico-101013111502-phpapp02.ppt
Unidad 15 Radiaciones ionizantes y No ionizantes.pptx
ETICA PROFESIONAL PARA MOTIVACION PERSONAL
SISTEMAS INTEGRADOS DE GESTION ISO 9/14/45
CRIPTOGRAFÍA BASICA EN POWER POINT - CS
Investigación de Operaciones I universidad nacional de Piura.pptx
REALITY "Vive como quieras ser" Un año sobre el terreno creando un escenario ...
EVALUACIÓN DE IMPACTO AMBIENTAL PARA PROYECTOS.pptx
electronica y seguridad informatica presentaciones
Publicidad

Web api, más allá del 'hola mundo'

  • 2. WebApi, más allá del “Hola mundo” 19/10/2017
  • 4. www.plainconcepts.com MADRID Paseo de la Castellana 163, 10º 28046 Madrid T. (+34) 91 5346 836 BILBAO Ledesma 10-bis, Planta 3 dpto 2 48001 Bilbao T. (+34) 94 6073 371 BARCELONA Av. Josep Tarradellas 10, 6º 1ª 08029 Barcelona T. (+34) 93 3607 114 SEVILLA Avenida de la innovación s/n Edificio Renta Sevilla, 3º A 41020 Sevilla DUBAI Dubai Internet City. Building 1 73030 Dubai. EAU T. (+971) 4 551 6653 LONDON Impact Hub Kings Cross 24B York Way, N1 9AB London. UK SEATTLE 1511, Third Ave Seattle WA 98101. USA T. (+1) 206 708 1285
  • 5. Agenda Organización de proyectos Inyección de dependencias Autenticación y autorización Documentación del api Versionado Implementación de los métodos de acción (CQRS) Test de integración y unitarios https://github.com/hbiarge/WebApi-Sample
  • 7. Organización de proyectos Api como proyecto de librería de clases • Reutilizable en múltiples hosts • Perdemos tooling 
  • 8. Inyección de dependencias DependencyResolvers • Elige tu contenedor de IoC Conoce la raíz de composición de WebApi Cómo gestiona IDisposable tu contenedor? Piensa en el ciclo de vida de tus dependencias
  • 9. Autenticación y autorización Diferencia entre 401 y 403 • Sobrescribe la implementación por defecto ClaimsPrincipal tiene más información que los roles • Utiliza los claims que necesites para tomar decisiones sobre autorización https://github.com/DavidParks8/Owin-Authorization
  • 10. Documenta tu API Swagger • Estandar de facto Gran ecosistema • Genaradores de código para clientes (C#, TypeScript, JS, …) https://github.com/domaindrivendev/Swashbuckle
  • 11. Versiona tu API Permite evolucionar más fácilmente un API pública con clientes Diferentes estrategias • Url/query string • Media Type https://github.com/Microsoft/aspnet-api-versioning
  • 12. Implementación de los métodos de acción Separación de lecturas y escrituras • CQRS Comands and queries • Micro-ORM en las queries • DDD en los comandos MediatR • Bus en memoria https://github.com/jbogard/MediatR
  • 13. Testea tu API Muy fácil montar integración • TestServer de Owin • TestServer es un host más de tu API • End-2-End con base de datos Haz test unitarios donde corresponda • No pruebes la infraestructura • Prueba la lógica
  • 15. www.plainconcepts.com MADRID Paseo de la Castellana 163, 10º 28046 Madrid T. (+34) 91 5346 836 BILBAO Ledesma 10-bis, Planta 3 dpto 2 48001 Bilbao T. (+34) 94 6073 371 BARCELONA Av. Josep Tarradellas 10, 6º 1ª 08029 Barcelona T. (+34) 93 3607 114 SEVILLA Avenida de la innovación s/n Edificio Renta Sevilla, 3º A 41020 Sevilla DUBAI Dubai Internet City. Building 1 73030 Dubai. EAU T. (+971) 4 551 6653 LONDON Impact Hub Kings Cross 24B York Way, N1 9AB London. UK SEATTLE 1511, Third Ave Seattle WA 98101. USA T. (+1) 206 708 1285