Archive

Articles taggués ‘REST’

Rest World à Best of Web 2015

J’ai récemment eu l’occasion d’assister à la conférence Best of Web, la réunion de tous les plus grands meetup parisiens. Vous pouvez retrouver le déroulement et le programme global de cette journée sur cet article de Stéphane Blanchon.

Dans cet article, je vais parler d’une conférence qui m’a particulièrement intéressé, étant très sensible au sujet des API Rest. J’en développe en effet quotidiennement dans mon travail au sein de Viseo. Il s’agit de la conférence de Virginie Bardales intitulée – vous l’aurez deviné – Rest World. Lire la suite…

Categories: Web Tags: , , ,

Angular JS, épisode 3 : il fait le REST (ou comment marier Angular et CXF)

Commençons par un résumé des épisodes précédents : après une présentation succincte d’Angular, nous avons développé une petite application de type « grille et détail » permettant d’éditer des objets téléphones.

Dans cet article, Henri Darmet, toujours lui, vous propose de connecter cette mini-réalisation à un véritable back-end en utilisant la technologie de communication phare du RIA : les services REST.

Angular JSLe tutoriel officiel d’Angular expose deux solutions, une « basique », à usage général, juste REST, et l’autre, plus spécialisée dans l’édition de données (la solution RESTful). L’ambition,  à moyen terme, étant de faire une application CRUD, intéressons nous tout de suite à la seconde, plus adaptée.

L’idée derrière tout ça ? Mesurer l’effort nécessaire pour avoir une chaine qui fonctionne de bout en bout dans un vrai environnement, c’est-à-dire avec de vrais services REST servis par un vrai serveur Java WEB. Et comme on pouvait s’y attendre, c’est bien plus délicat que d’exécuter les exemples du tutoriel, affutés pour gommer les difficultés.

Lire la suite…

Categories: Java EE Tags: , , ,

On aime, on partage #8

Bienvenue dans la série « On aime, on partage » d’Objet Direct !
Chaque semaine retrouvez les meilleurs articles du web issus de notre veille technologique.
 
 
 
 

Agilité :

Estimating might be broken, but it’s no evil

Les posts sur les estimations ont, en ce moment, le vent en poupe. La preuve, en voici encore un menant une nième réflexion sur l’intérêt d’estimer … et il le fait avec un recul plutôt intéressant !

Estimer n’est pas simple, et nous sommes en général pas très bon à cet exercice. Cependant, cela ne veut pas dire qu’estimer ne sert à rien !

Dans le fond, la question n’est pas de dire « qui a raison ? estimer ou ne pas estimer ? », mais plutôt « dans quels contextes l’estimation peut-elle s’avérer nécessaire, dans quels autres peut-on s’en passer ? »

Cet article force l’estime 😉

http://agile.dzone.com/articles/estimating-might-be-broken




Tribune libre :

Être développeur en France

Une fois n’est pas coutume, ce n’est pas un article mais une vidéo de débat sur la condition de développeur en France. Avec Nicolas Sadirac, DG de l’école 42, Jacques Froissant, CEO d’Altaïde et Daniel Cohen-Zardi, Président de SoftFluent, et fondateur du mouvement « fier d’être développeur »

A visionner sur BFM TV en replay


Si les charpentiers étaient recrutés comme des developpeurs ?

Pas besoin de commentaires, il suffit de lire et de sourire en repensant à certains entretiens d’embauches …

http://dawood.in/if-carpenters-were-hired-like-programmers/


Travailler ? Oui avec plaisir !

Je ne sais pas pour vous mais me concernant, je cherche avant tout à prendre du plaisir lors de mes missions.

Mes sources peuvent être diverses et variés : définir clairement et simplement le besoin du client, travailler en équipe, faire du TDD/Pair programming, faire une démo, découvrir de nouvelles technos/langages, … .

Et cette sensation de plaisir, lorsqu’elle est partagée avec le reste des membres d’une équipe, est un élément clé à la réussite d’un projet.

L’article qui suit nous résume succinctement les différentes sources/types de plaisir et comment les développer … à lire … avec plaisir 😉

http://blog.soat.fr/2013/05/agile-france-2013-travailler-oui-avec-plaisir/


Ouverture de la section Française d’InfoQ

InfoQ, le célèbre site d’actualité dédié au métier de développeurs et aux dernières tendances de notre métier vient de lancer sa section Francophone ! Chez Objet Direct, nous sommes depuis longtemps des fervents lecteurs du site dans sa version anglaise et nous avons souvent cité des articles dans cette rubrique. Bravo donc à l’équipe de contributeurs, qui a lancé cette nouvelle version du site.

http://www.infoq.com/fr/news/2013/06/infoq-fr-unlaunch


Pourquoi j’ai choisi de me passer de l’App Store et de l’Android Store

Cet article est une réflexion autour de la notion d’AppStore mais plus généralement des applications natives par rapport aux Webapps. Jérôme Morlon explique sa préférence pour ces dernières et présente les avantages qu’il voit à les utiliser. Il se base sur les fonctionnalités apportées par HTML5 et Javascript dans la gestion des périphériques ou du stockage local pour gérer les pertes de connexion. Bien sûr, il revient aussi sur les avantages en termes de coût de développement ou de déploiement.

A lire sur le journal du net: « Pourquoi j’ai choisi de me passer de l’App Store et de l’Android store.




Outils de développements :

Chrome: Plugin Postman

Si vous utilisez des webservices REST, je vous conseille POSTMAN pour Chrome. Grâce à ce plugin, fini les recherches des APIs dans votre application ou les copier-coller hasardeux. Ce plugin permet de manipuler, de requêter et d’enregistrer des APIs. Les fonctionnalités indiquées sur le site sont les suivantes:

  • Création rapide de requêtes

  • Enregistrement des requêtes dans le plugin

  • Formatage des réponses des APIs

  • Export des requêtes (donc partage facile entre développeurs)

  • Et bien d’autres !

https://chrome.google.com/webstore/detail/postman-rest-client/fdmmgilgnpjigdojojpjoooidkmcomcm




Technos :

Wi-Fi signals enable gesture recognition throughout entire home

Cet article présente les travaux d’universitaires visant à contrôler nos appareils électroniques d’un simple geste de la main. Et ce n’est pas avec la Kinect de Microsoft mais l’utilisation de réseaux WiFi. En étudiant et interprétant les variations du signal, ils déterminent le mouvement qui en est à l’origine et y associe un traitement. On peut ainsi changer de chaine sur son téléviseur, passer à la plage musicale suivante ou encore gérer le chauffage d’une pièce …

http://www.washington.edu/news/2013/06/04/wi-fi-signals-enable-gesture-recognition-throughout-entire-home/





Merci à nos contributeurs de la semaine : Mathieu Laurent, Benoît Parmentier, Benjamin Marron, Raphaël Brugier.

Soirée Spring Data le 6 juin au Spring User Group


Logo du Spring User Group

 

Lancé il y a plus de 3 ans, le Spring User Group Paris France, n’avait pas proposé à ses membres de se réunir depuis quelques temps.

 

A l’initiative de certains de ses membres, une nouvelle dynamique se forme et cela se matérialise par une soirée la semaine prochaine sur Spring Data.

Logo Spring Data

Ce n’est autre qu’Oliver Gierke, leader du projet Spring Data, qui nous parlera du sujet pendant plus d’une heure. Il devrait nous parler du module principal de Spring Data, des principes et concepts utilisés pour fournir aux utilisateurs des APIs Spring Data un accès facile à de multiples sources de données (relationnelles ou non relationnelles), et enfin d’exemples dans le monde NoSQL avec MongoDB et Neo4j.

En marge de cette présentation, les organisateurs du Spring User Group ont proposé aux membres du groupe d’éclairer durant 15 minutes les participants sur un sujet de leur choix. C’était l’occasion rêvée pour Mehdi de proposer un sujet qui lui tient à coeur et qu’il a déjà partagé avec les Novédiens lors d’une soirée début 2013. Ce dernier aura donc l’honneur de réaliser un live coding montrant comment gagner en productivité et mettre en place des services web RESTful en moins de 15′ avec Spring Roo et Spring MVC.

Le programme de la soirée, qui démarrera à 19h dans les locaux de Zenika au 10 rue Milan 75009 Paris, est le suivant :

  • Les profiles Spring par Mathieu Parisot
  • Live coding par Mehdi Ben Haj Abbes
  • Spring Data by Oliver Gierke (en anglais)
  • Apéritifs et Discussions

Il n’est pas trop tard pour vous inscrire.

Applications REST sur le Google App Engine

Bien que très complet, l’App Engine de Google n’intègre pas la gestion des ressources REST. Voici comment la lui ajouter :

  1. Télécharger la dernière version de jersey ou l’intégrer à maven ;
  2. Ajouter les JAR suivants dans le répertoire /war/WEB-INF/lib :
  3. asm-xxx.jar
    jackson-core-asl-xxx.jar
    jersey-client-xxx-ea-SNAPSHOT.jar
    jersey-core-xxx-ea-SNAPSHOT.jar
    jersey-json-xxx-ea-SNAPSHOT.jar
    jersey-server-xxx-ea-SNAPSHOT.jar
    jettison-xxx.jar
    jsr311-api-xxx.jar
    
  4. Modifier le web.xml comme suit :
  5. <servlet>
    	<servlet-name>Objet Direct Web Application</servlet-name>
    	<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
    	<init-param>
    		<param-name>com.sun.jersey.config.property.packages</param-name>
    		<param-value>com.objetdirect</param-value>
    	</init-param>
    	<load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    	<servlet-name>Jersey Web Application</servlet-name>
    	<url-pattern>/resources/*</url-pattern>
    </servlet-mapping>
    
  6. Générer l’objet xml réponse (à partir d’un xsd à l’aide de xjc par exemple) :
  7. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    	<xsd:element name="weather">
    		<xsd:complexType>
    			<xsd:attribute name="type" type="xsd:string"/>
    		</xsd:complexType>
    	</xsd:element>
    </xsd:schema>
    
  8. Annoter les classes ressources :
  9. package com.objetdirect;
    
    @Path("/weather")
    public class ObjetDirectResource {
    
    	@GET
    	@Path("/{city: [A-Z][a-z]+}")
    	@Produces(MediaType.APPLICATION_XML)
    	public Response getCityWeather(@PathParam("city") String cityName) {
    		Weather weather = new Weather();
    		weather.setType("Very clever on " + cityName);
    
    		ResponseBuilder responseBuilder;
    		responseBuilder = Response.status(Status.OK);
    		responseBuilder = responseBuilder.type(MediaType.APPLICATION_XML);
    		responseBuilder = responseBuilder.entity(weather);
    		Response response =  responseBuilder.build();
    		return response;
    	}
    }
    
  10. Démarrer le serveur et accéder à la resource localhost:8888/resources/weather/Paris
Categories: Divers, Outillage Tags: ,

API REST en .NET

Suite à mon dernier article sur le RIA et la formation en soirée que j’ai animée, j’ai eu quelques questions sur comment exposer un modèle relationnel dans un mode REST en .NET et plus particulièrement pour un client RIA genre Silverlight.

Je vais donc vous proposer une série d’articles sur le sujet.

Le premier présentera ADO.NET Data Services, le framework de Microsoft qui à partir d’un provider LINQ peut exposer votre modèle d’entité sur HTTP dans un mode REST.

A titre d’exemple, je vais utiliser le prototype que j’ai réalisé pour une application traitant de la traçabilité des produits sanguins au CHU de Grenoble. J’ai donc le modèle d’entités suivant:

Modèle d'entités

Modèle d'entités

Depuis Visual Studio, j’ai créé un service ADO.NET Data Services. Je lui ai indiqué mon modèle d’entités et j’ai ajusté les autorisations. La ligne suivante indique que les entités Etat sont accessibles en lecture seule.

config.SetEntitySetAccessRule(« Etat », EntitySetRights.AllRead);

Mon modèle est maintenant accessible sur HTTP. Je peux regarder sa description à l’URI suivante : http://mondomaine.com/DTI.svc/

Le modèle REST exposé par ADO.NET Data Services

Le modèle REST exposé par ADO.NET Data Services

Les connaisseurs noteront que la description de notre API utilise Atom Publishing Protocol et Atom Syndication Format.

Je peux maintenant interroger mon modèle en requêtant directement avec mon navigateur. Par exemple, pour avoir toutes les poches, je vais utiliser l’URI http://localhost:2427/DTI.svc/Poche

Personnellement, pour vérifier mes requêtes j’utilise Fiddler. Par défaut, on obtient un feed Atom contenant une collection de poches. ADO.NET Data Services supporte également le format JSON. Si dans Fiddler, vous modifiez le header HTTP Accept avec application/json vous obtiendrez un flux JSON:

Une collection de poches au format JSON

Une collection de poches au format JSON

ADO.NET Data Services ne se limite pas à récupérer une collection d’entités. On peut filtrer les entités sur certains critères. Par exemple l’URI http://localhost:2427/DTI.svc/Poche?$filter=NumDon%20%eq%20%12345678 me permet de récupérer la/les poches dont le champ NumDon vaut 12345678. On peut également récupérer les entités associées aux poches. L’URI http://localhost:2427/DTI.svc/Poche?$expand=Tracabilite récupère les poches avec leurs traçabilité sachant qu’une poche peut avoir plusieurs traçabilités.

Les principales fonctionnalités de requêtage sont disponibles: filtre, tri, pagination. Le format des URI est décrit ici

Dans les applications de gestion de données, on ne se limite pas à afficher des données. On souhaite aussi ajouter, modifier, supprimer. Dans le monde REST, on utilise pour cela le verbe HTTP. Par défaut, lorsque vous saisissez une URI dans votre navigateur, c’est le verbe GET qui est utilisé. Mais on peut aussi utiliser les verbes POST, PUT ou DELETE si les conditions d’accès que nous avons définies sur le serveur le permettent.

On peut noter que toute cette API repose sur des standards reconnus: HTTP, Atom, JSON. Elle peut donc être interrogée par n’importe quel client qui supporte ces standards.

Dans le prochain article, j’expliquerai comment interroger cette API à partir d’un client Silverlight et de LINQ For ADO.NET Data Services.