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.
2. 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
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
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>
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 }
);
15. 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
20. 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
23. 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)
24. Requête en mode batch
2014-03-27 3T – ASP.NET WebAPI 24
⦿La seule chose à faire côté serveur
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/
2014-03-27 3T – ASP.NET WebAPI 29