Question 1

Qu'est-ce que le service Web RESTful et pourquoi est-il préféré au service Web SOAP ?

Réponse 1

REST signifie REpresentational State Transfer (REST), qui est un style d’architecture logicielle sans état qui lit les pages Web contenant XML, JSON, texte brut, etc. REST est une alternative plus simple aux services Web SOAP (Simple Object Access Protocol) et Web Services Description Language Web Services ( WSDL), et est devenu un modèle d'interface de programme d'application (API) populaire. Une API RESTful, ou service Web RESTful, utilise à la fois HTTP et REST.

1) REST est très léger et n'a pas toute la complexité de SOAP

2) REST est très simple car il utilise les méthodes HTTP GET, POST, PUT et DELETE pour mettre à jour les ressources sur le serveur.

3) REST est généralement mieux utilisé avec une architecture orientée ressources (ROA). Dans ce mode d’architecture , tout est une ressource et effectue des opérations CRUD (Créer, Lire, Mettre à jour et Supprimer) sur ces ressources. HTTP POST pour créer une ressource sur le serveur, HTTP GET pour lire une ressource à partir du serveur, HTTP PUT pour mettre à jour une ressource sur le serveur et HTTP DELETE pour supprimer une ressource sur le serveur. La ressource peut être un compte, une transaction, etc.

Par exemple



Le service Web RESTful est facile, simple, prend en charge plusieurs formats de données comme XML, JSON, etc. et facilement testable. Il peut être testé par

A. Un appel direct du service à partir du navigateur en tapant une URL si le service RESTFul prend en charge la requête GET avec les paramètres de requête. Par exemple :

B. Vous pouvez utiliser un plugin Firefox comme «poster» pour publier une requête XML sur votre service.

C. Vous pouvez écrire un client de service Web pour utiliser le service Web à partir d'une classe de test ou d'un client d'application distinct. Vous pouvez utiliser des bibliothèques comme HttpClient, CXF Client, URLConnection, etc. pour vous connecter au service RESTful.

Question 2

Quelles sont les conventions URI du service Web RESTFul ? Pouvez-vous discuter des verbes et des noms et des ressources ?

Réponse 2

Le modèle de haut niveau pour l'URI RESTful est

Pour lister tous les comptes

Il s'agit d'une d’une collection de ressources renvoyant une liste de comptes.

L'URI contient des noms représentant les ressources dans une structure hiérarchique. Par exemple, si vous souhaitez obtenir une valeur de transaction particulière sous un compte, vous pouvez le faire

Où 123 est le numéro de compte et 567 est le numéro de transaction ou l'ID. Il s'agit d'une ressource unique renvoyant une seule transaction.

Si vous souhaitez répertorier une collection de transactions supérieures à une date particulière

Les verbes sont définis via les méthodes HTTP GET, POST, PUT et DELETE. Les exemples ci-dessus sont essentiellement des demandes GET renvoyant des comptes ou des transactions. Si vous souhaitez créer une nouvelle demande de transaction, vous effectuez un POST avec l'URL suivante

Les données de transaction réelles seront envoyées dans le corps de la demande en tant que données JSON.

L'URI ci-dessus pourrait être utilisé avec une méthode PUT http pour modifier un enregistrement de transaction existante.

Vous pouvez également contrôler la méthode à exécuter à l'aide d'en-têtes HTTP ou de noms d'hôtes dans l'URL. Voici un exemple Spring MVC:

À faire et à ne pas faire:

- N'utilisez pas les paramètres de requête pour modifier l'état. Utilisez des paramètres de requête pour la sous-sélection d'une ressource comme la pagination, le filtrage, les requêtes de recherche, etc.

- N'utilisez pas des extensions spécifiques à l'implémentation dans vos URI (.do, .py, .jsf, etc.). Vous pouvez utiliser .csv, .json, etc.

- N'utilisez jamais GET pour modifier l'état. Utilisez GET autant que possible. Privilégiez POST plutôt que PUT en cas de doute.

- N'effectuez pas une opération qui ne soit pas idempotente avec PUT.

- Utilisez DELETE de préférence à POST pour supprimer les ressources.

- N'encombrez pas votre URL avec des verbes ou des trucs qui devraient être dans un en-tête ou un corps de requête. Déplacez des éléments de l'URI qui devraient se trouver dans un en-tête HTTP ou un corps. Chaque fois qu'il semble que vous ayez besoin d'un nouveau verbe dans l'URL, pensez plutôt à transformer ce verbe en nom. Par exemple, transformez «activer» en «activation» et «valider» en «validation».

Question 3

Quelles sont les différentes implémentations de JAX-RS disponibles au choix en Java?

Réponse 3

Lorsque vous développez avec REST en Java, vous avez le choix entre de nombreuses options en termes de frameworks. Il y a Jersey, l'implémentation de référence d'Oracle, puis vous avez RestEasy, le choix JBoss, et il y a CXF, le choix Apache.

Question 4

Comment procéderiez-vous pour implémenter le service Web RESTful en utilisant le framework de votre choix ?

Réponse 4

Étape 1: dans le pom.xml, définissez la bibliothèque JAX-RS

Étape 2: implémenter le service Web RESTful

Étape 3: Bootstrap the jboss resteasy via le descripteur de déploiement web.xml

Étape 4: l'URL pour accéder à la ressource

Étape 5: La résultat

“Restful hello: Peter”


Question 5

Que se passe-t-il si les ressources RestFul sont accédées simultanément par plusieurs clients?

Réponse 5

Puisqu'une nouvelle instance de ressource est créée pour chaque requête , il n'est pas nécessaire de la rendre thread-safe ou d'ajouter une synchronisation. Les clients simultanés peuvent accéder en toute sécurité aux ressources RestFul.

Question 6

Quelles sont les annotations utilisées dans JAX-RS?

Réponse 6

@GET, @POST, @PUT, @DELETE pour spécifier le type de verbe que cette méthode (ou service Web) exécutera

:

@Produces pour spécifier le type de sortie que cette méthode (ou service Web) produira.

@Consumes pour spécifier les types de média MIME qu'une ressource REST peut consommer


@Path pour spécifier le chemin URL sur lequel cette méthode sera invoquée

@PathParam pour lier les paramètres de style REST aux arguments de méthode. Par exemple http: // localhost: 8080 / context / accounting-services / PeterAndCo

@QueryParam pour accéder aux paramètres dans la chaîne de requête (http: // localhost: 8080 / context / accounting-services? AccountName = PeterAndCo).

@FormParam pour lire les paramètres envoyés dans une requête POST. Les ressources REST consomment généralement XML / JSON, mais parfois vous voulez lire les paramètres dans POST.