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

Preview:

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.

Citation preview

2023-04-12

ASP.NET WebAPI

3T – ASP.NET WebAPI 1

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

ASP.NET WebAPI

REST et les APIs

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

4

Web API

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

⦿REST ?

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

6

Web API

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

7

Web API

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

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

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

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>

11

Web API

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

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

12

Web API

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

⦿Un modèle similaire à ASP.NET MVC

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 });

ASP.NET WebAPI

La négociation de contenu

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

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

ASP.NET WebAPI

Le routage par attribut

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

17

Le routage par attribut

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

⦿Simplifier la table de routage

⦿Simplifier l’écriture des contrôleurs

18

Le routage par attribut

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

ASP.NET WebAPI

Web API Client

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

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

21

Web API Client

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

⦿Et à l’usage ?

ASP.NET WebAPI

Requête en mode batch

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

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)

24

Requête en mode batch

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

⦿La seule chose à faire côté serveur

ASP.NET WebAPI

Documentation

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

26

Documentation

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

27

Documentation

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

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

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