asp.net web api - léonard labat (18 février 2014)

29
ASP.NET WebAPI 2022-05-14 3T – ASP.NET WebAPI 1

Upload: soat

Post on 24-May-2015

2.612 views

Category:

Technology


0 download

DESCRIPTION

HTTP est un protocole simple à comprendre, simple à utiliser et c’est cette simplicité qui le rend disponible sur un grand nombre de plate-forme. REST, de son côté, est un style d’architecture qui permet d’exposer facilement une API en utilisant HTTP et différents types de représentations de données tels que JSON ou XML. ASP.NET Web API est une évolution de WCF pour écrire une couche d’API REST, en utilisant un modèle de programmation proche d’ASP.NET MVC. Cette soirée 3T sera l’occasion pour vous de découvrir les fonctionnalités offertes par ASP.NET Web API qui font que c’est une technologie qu’il faut envisager d’utiliser lorsque vous devez créer une API REST.

TRANSCRIPT

Page 1: ASP.Net Web API - Léonard Labat (18 février 2014)

2023-04-12

ASP.NET WebAPI

3T – ASP.NET WebAPI 1

Page 2: ASP.Net Web API - Léonard Labat (18 février 2014)

2023-04-12 2

Agenda

⦿ REST et les APIs

⦿ La négociation de contenu

⦿ Routage par attribut

⦿ Web API Client

⦿ Support des requêtes batch

⦿ La documentation

3T – ASP.NET WebAPI

Page 3: ASP.Net Web API - Léonard Labat (18 février 2014)

ASP.NET WebAPI

REST et les APIs

2023-04-12 3T – ASP.NET WebAPI 3

Page 4: ASP.Net Web API - Léonard Labat (18 février 2014)

4

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿REST ?

Page 5: ASP.Net Web API - Léonard Labat (18 février 2014)

5

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿REST ? 3 règles principales

⦿ URI : Identifiant de ressources⦿ Verbe HTTP : Identifiant d’opération⦿ Réponse HTTP : Représentation d’une

ressource

Page 6: ASP.Net Web API - Léonard Labat (18 février 2014)

6

Web API

2023-04-12 3T – ASP.NET WebAPI

Page 7: ASP.Net Web API - Léonard Labat (18 février 2014)

7

Web API

2023-04-12 3T – ASP.NET WebAPI

Page 8: ASP.Net Web API - Léonard Labat (18 février 2014)

8

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿Des exemples …

⦿ Récupérer un produit ?⦿POST ? NON !⦿GET ? OUI !⦿ GET http://monsiteweb/livre/3

Page 9: ASP.Net Web API - Léonard Labat (18 février 2014)

9

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿…

⦿ Créer un produit ?⦿GET ? NON !⦿POST ? OUI !⦿ POST http://monsiteweb/livre/creer

⦿ Mais aussi : PUT, DELETE, PATCH, HEAD

Page 10: ASP.Net Web API - Léonard Labat (18 février 2014)

10

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿Format des données et content negociation⦿ Entête Accept⦿ Application/json⦿ Application/xml⦿ …

{ "Id":5, "Nom":"Produit 5"} <Produit xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/MvcApplication.Controllers"> <Id>5</Id> <Nom>Produit 5</Nom></Produit>

Page 11: ASP.Net Web API - Léonard Labat (18 février 2014)

11

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿ASP.NET MVC ou ASP.NET Web API ?

Page 12: ASP.Net Web API - Léonard Labat (18 février 2014)

12

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿Un modèle similaire à ASP.NET MVC

Page 13: ASP.Net Web API - Léonard Labat (18 février 2014)

13

Web API

2023-04-12 3T – ASP.NET WebAPI

⦿Et à l’usage ?

public class ValuesController : ApiController{ public IEnumerable<string> Get() { return new[] { "value1", "value2" }; }}

config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional });

Page 14: ASP.Net Web API - Léonard Labat (18 février 2014)

ASP.NET WebAPI

La négociation de contenu

2023-04-12 3T – ASP.NET WebAPI 14

Page 15: ASP.Net Web API - Léonard Labat (18 février 2014)

15

La négociation de contenu

2023-04-12 3T – ASP.NET WebAPI

⦿En interne :⦿ Le ContentNegociator et

les ContentNegociationResult

⦿Pour créer un nouveau formatter⦿ MediaTypeFormatter⦿ BufferedMediaTypeFormatter

Page 16: ASP.Net Web API - Léonard Labat (18 février 2014)

ASP.NET WebAPI

Le routage par attribut

2023-04-12 3T – ASP.NET WebAPI 16

Page 17: ASP.Net Web API - Léonard Labat (18 février 2014)

17

Le routage par attribut

2023-04-12 3T – ASP.NET WebAPI

⦿Simplifier la table de routage

⦿Simplifier l’écriture des contrôleurs

Page 18: ASP.Net Web API - Léonard Labat (18 février 2014)

18

Le routage par attribut

2023-04-12 3T – ASP.NET WebAPI

Page 19: ASP.Net Web API - Léonard Labat (18 février 2014)

ASP.NET WebAPI

Web API Client

2023-04-12 3T – ASP.NET WebAPI 19

Page 20: ASP.Net Web API - Léonard Labat (18 février 2014)

20

Web API Client

2023-04-12 3T – ASP.NET WebAPI

⦿ Un paquet NuGet⦿ Microsoft.AspNet.WebApi.Client

⦿ La classe HttpClient

⦿ Le même modèle que le code serveur

⦿ Egalement disponible pour les apps W8 et Windows Phone

Page 21: ASP.Net Web API - Léonard Labat (18 février 2014)

21

Web API Client

2023-04-12 3T – ASP.NET WebAPI

⦿Et à l’usage ?

Page 22: ASP.Net Web API - Léonard Labat (18 février 2014)

ASP.NET WebAPI

Requête en mode batch

2023-04-12 3T – ASP.NET WebAPI 22

Page 23: ASP.Net Web API - Léonard Labat (18 février 2014)

23

Requête en mode batch

2023-04-12 3T – ASP.NET WebAPI

⦿Minimiser le nombre de requêtes⦿ Réduire le traffic réseau⦿ UI moins « clignotante »

⦿Utiliser une requête HTTP multipart

⦿Point d’entrée attaché à un handler spécifique (HttpBatchHandler)

Page 24: ASP.Net Web API - Léonard Labat (18 février 2014)

24

Requête en mode batch

2023-04-12 3T – ASP.NET WebAPI

⦿La seule chose à faire côté serveur

Page 25: ASP.Net Web API - Léonard Labat (18 février 2014)

ASP.NET WebAPI

Documentation

2023-04-12 3T – ASP.NET WebAPI 25

Page 26: ASP.Net Web API - Léonard Labat (18 février 2014)

26

Documentation

2023-04-12 3T – ASP.NET WebAPI

Page 27: ASP.Net Web API - Léonard Labat (18 février 2014)

27

Documentation

2023-04-12 3T – ASP.NET WebAPI

Page 28: ASP.Net Web API - Léonard Labat (18 février 2014)

2023-04-12 3T – ASP.NET WebAPI 28

Page 29: ASP.Net Web API - Léonard Labat (18 février 2014)

29

Pour aller plus loin

⦿ http://www.asp.net/web-api⦿ http://blogs.msdn.com/b/webdev/

⦿ http://blog.soat.fr/author/leonard-labat/ ⦿ http://blogs.developpeur.org/leo/

2023-04-12 3T – ASP.NET WebAPI