asp.net web api - léonard labat (18 février 2014)
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
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