2014-03-27 3T – ASP.NET WebAPI 1
Agenda
⦿ REST et les APIs
⦿ La négociation de contenu
⦿ Routage par attribut
⦿ Web API Client
⦿ Support des requêtes batch
⦿ La documentation
2014-03-27 3T – ASP.NET WebAPI 2
ASP.NET WebAPI
REST et les APIs
2014-03-27 3T – ASP.NET WebAPI 3
Web API
2014-03-27 3T – ASP.NET WebAPI 4
⦿REST ?
Web API
2014-03-27 3T – ASP.NET WebAPI 5
⦿REST ? 3 règles principales
⦿ URI : Identifiant de ressources
⦿ Verbe HTTP : Identifiant d’opération
⦿ Réponse HTTP : Représentation d’une
ressource
Web API
2014-03-27 3T – ASP.NET WebAPI 6
Web API
2014-03-27 3T – ASP.NET WebAPI 7
Web API
2014-03-27 3T – ASP.NET WebAPI 8
⦿Des exemples …
⦿ Récupérer un produit ?
⦿POST ? NON !
⦿GET ? OUI !
⦿ GET http://monsiteweb/livre/3
Web API
2014-03-27 3T – ASP.NET WebAPI 9
⦿…
⦿ Créer un produit ?
⦿GET ? NON !
⦿POST ? OUI !
⦿ POST http://monsiteweb/livre/creer
⦿ Mais aussi : PUT, DELETE, PATCH, HEAD
Web API
2014-03-27 3T – ASP.NET WebAPI 10
⦿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>
Web API
2014-03-27 3T – ASP.NET WebAPI 11
⦿ASP.NET MVC ou ASP.NET Web API ?
Web API
2014-03-27 3T – ASP.NET WebAPI 12
⦿Un modèle similaire à ASP.NET MVC
Web API
2014-03-27 3T – ASP.NET WebAPI 13
⦿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
2014-03-27 3T – ASP.NET WebAPI 14
La négociation de contenu
2014-03-27 3T – ASP.NET WebAPI 15
⦿En interne :
⦿ Le ContentNegociator et
les ContentNegociationResult
⦿Pour créer un nouveau formatter
⦿ MediaTypeFormatter
⦿ BufferedMediaTypeFormatter
ASP.NET WebAPI
Le routage par attribut
2014-03-27 3T – ASP.NET WebAPI 16
Le routage par attribut
2014-03-27 3T – ASP.NET WebAPI 17
⦿Simplifier la table de routage
⦿Simplifier l’écriture des contrôleurs
Le routage par attribut
2014-03-27 3T – ASP.NET WebAPI 18
ASP.NET WebAPI
Web API Client
2014-03-27 3T – ASP.NET WebAPI 19
Web API Client
2014-03-27 3T – ASP.NET WebAPI 20
⦿ 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
Web API Client
2014-03-27 3T – ASP.NET WebAPI 21
⦿Et à l’usage ?
ASP.NET WebAPI
Requête en mode batch
2014-03-27 3T – ASP.NET WebAPI 22
Requête en mode batch
2014-03-27 3T – ASP.NET WebAPI 23
⦿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)
Requête en mode batch
2014-03-27 3T – ASP.NET WebAPI 24
⦿La seule chose à faire côté serveur
ASP.NET WebAPI
Documentation
2014-03-27 3T – ASP.NET WebAPI 25
Documentation
2014-03-27 3T – ASP.NET WebAPI 26
Documentation
2014-03-27 3T – ASP.NET WebAPI 27
2014-03-27 3T – ASP.NET WebAPI 28
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/
2014-03-27 3T – ASP.NET WebAPI 29

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

  • 1.
    2014-03-27 3T –ASP.NET WebAPI 1
  • 2.
    Agenda ⦿ REST etles APIs ⦿ La négociation de contenu ⦿ Routage par attribut ⦿ Web API Client ⦿ Support des requêtes batch ⦿ La documentation 2014-03-27 3T – ASP.NET WebAPI 2
  • 3.
    ASP.NET WebAPI REST etles APIs 2014-03-27 3T – ASP.NET WebAPI 3
  • 4.
    Web API 2014-03-27 3T– ASP.NET WebAPI 4 ⦿REST ?
  • 5.
    Web API 2014-03-27 3T– ASP.NET WebAPI 5 ⦿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 2014-03-27 3T– ASP.NET WebAPI 6
  • 7.
    Web API 2014-03-27 3T– ASP.NET WebAPI 7
  • 8.
    Web API 2014-03-27 3T– ASP.NET WebAPI 8 ⦿Des exemples … ⦿ Récupérer un produit ? ⦿POST ? NON ! ⦿GET ? OUI ! ⦿ GET http://monsiteweb/livre/3
  • 9.
    Web API 2014-03-27 3T– ASP.NET WebAPI 9 ⦿… ⦿ Créer un produit ? ⦿GET ? NON ! ⦿POST ? OUI ! ⦿ POST http://monsiteweb/livre/creer ⦿ Mais aussi : PUT, DELETE, PATCH, HEAD
  • 10.
    Web API 2014-03-27 3T– ASP.NET WebAPI 10 ⦿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 2014-03-27 3T– ASP.NET WebAPI 11 ⦿ASP.NET MVC ou ASP.NET Web API ?
  • 12.
    Web API 2014-03-27 3T– ASP.NET WebAPI 12 ⦿Un modèle similaire à ASP.NET MVC
  • 13.
    Web API 2014-03-27 3T– ASP.NET WebAPI 13 ⦿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 } );
  • 14.
    ASP.NET WebAPI La négociationde contenu 2014-03-27 3T – ASP.NET WebAPI 14
  • 15.
    La négociation decontenu 2014-03-27 3T – ASP.NET WebAPI 15 ⦿En interne : ⦿ Le ContentNegociator et les ContentNegociationResult ⦿Pour créer un nouveau formatter ⦿ MediaTypeFormatter ⦿ BufferedMediaTypeFormatter
  • 16.
    ASP.NET WebAPI Le routagepar attribut 2014-03-27 3T – ASP.NET WebAPI 16
  • 17.
    Le routage parattribut 2014-03-27 3T – ASP.NET WebAPI 17 ⦿Simplifier la table de routage ⦿Simplifier l’écriture des contrôleurs
  • 18.
    Le routage parattribut 2014-03-27 3T – ASP.NET WebAPI 18
  • 19.
    ASP.NET WebAPI Web APIClient 2014-03-27 3T – ASP.NET WebAPI 19
  • 20.
    Web API Client 2014-03-273T – ASP.NET WebAPI 20 ⦿ 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 2014-03-273T – ASP.NET WebAPI 21 ⦿Et à l’usage ?
  • 22.
    ASP.NET WebAPI Requête enmode batch 2014-03-27 3T – ASP.NET WebAPI 22
  • 23.
    Requête en modebatch 2014-03-27 3T – ASP.NET WebAPI 23 ⦿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 modebatch 2014-03-27 3T – ASP.NET WebAPI 24 ⦿La seule chose à faire côté serveur
  • 25.
  • 26.
  • 27.
  • 28.
    2014-03-27 3T –ASP.NET WebAPI 28
  • 29.
    Pour aller plusloin ⦿ http://www.asp.net/web-api ⦿ http://blogs.msdn.com/b/webdev/ ⦿ http://blog.soat.fr/author/leonard-labat/ ⦿ http://blogs.developpeur.org/leo/ 2014-03-27 3T – ASP.NET WebAPI 29