Le Post Infeeny

Les articles des consultants et experts Infeeny

Building services for any client with ASP.NET Web API

Il y a plus de plateformes disponibles (téléphones, tablettes, pc etc…) qu’auparavant.

Un Web API est un service HTTP, prévu pour être consommé par un maximum de types d’appareils et d’applications.

Les services Web API utilisent HTTP comme un protocole d’application et non de transport.

On nous présente ensuite brivement que Lync Unified Communications Web API utilise les ASP.NET Web API pour exposer leurs données.

Une petite démonstration de Lync sur WP8 et Navigateur utilisant les services API est ensuite effectuée.

Quelques points sur ASP.NET Web API :

  • Model de programmation modern
  • Facile de lier des ressources à des URIs et d’implémenter une interface uniforme autour de http
  • Support de nombreux formats et de la négociation de contenu
  • Gestion des medias et de la génération de liens
  • Permet une meilleure séparation des différentes couches de l’application
  • Facile à héberger
  • Léger, testable et se scale facilement.
  • Est inclus dans ASP.NET MVC 4 et dans Visual Studio 2012 et est disponible dans Nuget
  • Supporté à partir de .NET

S’ensuit un démonstration de création d’un nouveau service Web API, de la génération automatique de documentation et du tracing activé par défaut dans le template de projet.

Après la démonstration le fonctionnement interne est montré la liste des attributs correspondants aux méthodes HTTP aussi (HttpGet/HttpPost/HttpPut/HttpDelete).

Si on veut changer le nom d’une action on peut aussi utiliser un attribut).

En ce qui concerne les paramètre des actions,  il existe des MediaTypeFormatters pour le JSON, XML, and form-url-encoded par défaut pour désérialiser des types complexes.

On peut les sur définir en utilisant [FromUrl], [FromBody], [ModelBinder]. On peut toujours travailler avec HttpRequestMessage pour traiter le message http directement.

Il est possible de valider les données grâce aux attributs définis sur les classes. Cela fonctionne de manière presque identique à MVC.

L’objet de réponse http est formatté grâce aus HttpTypeFormatters. Le requête http indique généralement le type de format préféré par le client et les formatters appropriés

sont choisis automatiquement.

Il est possible de retourner directement un HttpResponseMessage.

Démonstration de scaffolding à partir d’un modèle de donnée EntityFramework. (Erreurs et Réponse de création avec succès HttpStatusCode.Created ou d’échecs).

Présentation des filtres :

  • Action filters
  • Authorization filters
  • Exception filters

Ajout du support de OData pour la gestion des requêtes en retournant un IQueryable et de la pagination associée.

Ce dernier fait d’ailleurs l’objet d’une démonstration.

Quelques compléments :

  • Web API peut être ajouté à .NET 4
  • On a la main sur la doc générée via l’area help inclus au projet
  • Même si notre source ne supporte pas OData, on peut quand même utiliser le parser OData de la requête et traiter ensuite la query autrement
  • Fiddler = un bon outil pour appeler et tester ses apis !

On peut hoster Web API dans n’importe quel process, ici démo avec un projet console.

La dernière démo illustre la création de 3 clients : un site SPA, une app W8 et une app WP8. A noter au passage l’implementation d’un controller OAuth cote serveur, et l’utilisation du web authentication brocker cote W8 pour afficher la page de login du site web.

Une session d’introduction intéressante à voir pour ceux intéressés par les Web API.

John & Pierre-Yves

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :