Ce tutoriel vous montrera comment développer une application à l'aide de ** l'API Jersey Java RESTful ** sur une instance ** Alibaba Cloud Elastic Compute Service **.
Par Aditya, Alibaba Cloud Tech Share Auteur. Tech Share , Un programme d'incitation Alibaba Cloud qui encourage le partage des connaissances techniques et des meilleures pratiques au sein de la communauté cloud.
Avec la propagation de la technologie numérique, la même application devient disponible sur une variété d'appareils, y compris les ordinateurs portables, les téléphones mobiles et les téléviseurs. La plupart des applications en cours de création ou en cours de construction sont à plusieurs niveaux. Dans les applications à plusieurs niveaux, il existe une distinction claire entre ce que chaque type peut accomplir. Cela a du sens d'un point de vue commercial car cela permet d'économiser beaucoup d'argent. Cependant, pour répondre aux différents besoins des mêmes données disponibles dans différentes applications, nous avons besoin d'un emplacement commun où les données sont accessibles avec des règles de sécurité appropriées.
Du point de vue d'un développeur, le besoin croissant de réplication des données entre différents appareils et le changement technologique se produisent très rapidement. Vous ne pouvez pas vous permettre de faire tomber le système entier juste pour une simple mise à niveau pour changer le backend. Nous devons également pouvoir nous adapter aux nouvelles technologies sans les tracas du développement. En tenant compte de tous ces critères, le cadre REST fournit une abstraction claire entre les autres couches de la façon dont différentes technologies peuvent accéder aux données, telles que les technologies mobiles (Android et IOS) et Web JavaScript. Vous pouvez voir qu'il le fera.
Le déploiement de l'API REST sur un serveur sur site est inefficace et prend du temps. Jetez plutôt un œil à la manière de tirer parti d'Alibaba Cloud Elastic Compute Service pour déployer l'API Java REST et exposer le service à Internet. Faisons le. Cependant, avant de déployer l'API dans le cloud, vous devez d'abord créer l'API. Nous verrons ici comment créer une API REST Java basée sur jersey simple et la tester avec des outils.
REST signifie «transfert d'état de représentation». REST avait pour but de créer un découplage entre le serveur et le client pour conserver les composants réutilisables et leur permettre d'être remplacés à tout moment. Étant donné que REST est sans état, vous pouvez améliorer les performances et l'efficacité en implémentant un cache sur votre serveur.
Créons maintenant une API simple pour obtenir et enregistrer les détails des employés.
Vous trouverez ci-dessous l'outil complet que j'utilise pour le développement.
Eclipse IDE pour les développeurs JAVA EE --Dernier Maven
** Après vous être connecté à Alibaba Cloud Console, sélectionnez Elastic Compute Instance (https://www.alibabacloud.com/en/product/ecs) dans Product. ** **
Créez une instance, de préférence dans la région la plus proche. Suivez les étapes ci-dessous. Pour mon serveur, j'ai sélectionné le modèle "Pay-as-you-go" avec la configuration suivante.
Je prévois d'utiliser l'image du centre de données Windows 2016 pour ECS Instance. J'ai défini la mise en réseau, la configuration du système et d'autres valeurs par défaut. Cliquez sur Créer une instance pour continuer.
Une fois l'instance créée, elle ressemblera à ceci sur la console.
Cliquez sur le nom de l'instance ECS et sélectionnez Groupe de sécurité> Configurer la règle> Ajouter une règle de groupe de sécurité. Entrez les informations suivantes:
Veuillez noter que 8080 est l'endroit où mon tomcat est déployé. Vous devez le remplacer par l'emplacement où se trouve réellement Apache Tomcat.
Connectez l'instance ECS via le protocole RDP et poursuivez le développement à l'aide de la machine virtuelle Windows créée.
Téléchargez et installez le dernier "Eclipse IDE for JAVA EE Developers".
Installez la dernière version du JDK et définissez le chemin d'installation sur "JAVA_HOME" et la variable d'environnement "Path". Vous devez également installer maven. C'est très simple, vous devez télécharger et décompresser la dernière distribution binaire .zip et définir le chemin d'installation dans les variables d'environnement "M2_HOME" et "Path". Pour les besoins de cet article, le code est fourni sous forme de fichier zip. Téléchargez le projet et importez-le dans l'espace de travail eclipse.
Téléchargez le référentiel de code ici: https://alicloud-common.oss-ap-southeast-1.aliyuncs.com/RESTCodeRepo.zip
Importez le code depuis Fichier> Importer et sélectionnez Général dans la boîte de dialogue.
Jetons un œil au code importé. Eclipse a la structure de projet suivante.
En regardant le contenu du descripteur de déploiement "pom.xml" pour un projet complet, il contient les dépendances du projet.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.aditya.restapi</groupId>
<artifactId>RESTfulExample</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>RESTfulExample Maven WebApplication</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>maven2-repository.java.net</id>
<name>Java.net Repository for Maven</name>
<url>http://download.java.net/maven/2/</url>
<layout>default</layout>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.8</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.8</version>
</dependency>
</dependencies>
<build>
<finalName>RESTfulExample</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Model-version: La version avec laquelle le pom actuel est compatible, avec 4.0.0 pour prendre en charge maven 3.
Artifact Id, packaging, groupID, version, name: ils sont utilisés lors de l'empaquetage et pour décrire le projet lors du déploiement.
Référentiel: utilisé lors de l'empaquetage et décrit le projet lors du déploiement. Cette balise se compose de tous les référentiels extraits par la dépendance. Vous pouvez spécifier plusieurs référentiels sous celui-ci.
Dépendances: cette balise comprend toutes les dépendances nécessaires à votre projet. J'utilise des jars liés au jersey pour l'API, et j'utilise également des jars JUNIT.
Build: la balise build contient des informations complètes sur la manière dont l'application sera empaquetée au format WAR, le nom et la version du plug-in d'assembly maven qui sera utilisée pour l'empaquetage.
Nous avons besoin d'un modèle pour contenir les données que nous recevons et envoyons, nous avons donc créé un modèle Employee.java pour contenir le nom, l'âge, le salaire et l'entreprise.
package com.aditya.model;
public class Employee {
private String name;
private String age;
private int salary;
private String company;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public int getSalary() {
return salary;
}
public void setSalary(int salary) {
this.salary = salary;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
@Override
public String toString() {
return "Employee [name=" + name + ", age=" + age + ", salary=" + salary + ", company=" + company + "]";
}
}
Ce modèle se compose de méthodes getters, setters et toString () pour récupérer, stocker et afficher des informations.
Il se trouve dans le package "com.aditya.rest" de "JSONService.java" qui contient le code complet de l'API REST.
package com.aditya.rest;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import com.aditya.model.Employee;
@Path("/json/empservice")
public class JSONService {
@GET
@Path("/get")
@Produces(MediaType.APPLICATION_JSON)
public Employee getEmpDetails() {
Employee emp = new Employee();
emp.setName("Aditya");
emp.setCompany("ABC Corporation");
emp.setAge("31");
emp.setSalary(1000);
return emp;
}
@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_JSON)
public Response createEmpInJSON(Employee emp) {
String result = "Employee saved : " + emp.toString();
return Response.status(201).entity(result).build();
}
}
Nous avons d'abord la déclaration du paquet et nous remarquons également que toutes les importations et annotations sont importées du pot de jersey.
Le chemin initial mappe la carte et la classe, et la méthode est identifiée par @GET / @POST.
@GET:
Assurez-vous que @GET est mappé à getEmpDetails () qui renvoie des informations sur les données codées en dur. Cela annulera automatiquement le marshall (convertir l'objet JAVA en JSON). C'est l'avantage de Jersey Servlet. Voyons comment.
@POST:
@POST est mappé à createEMPInJSON (), qui reçoit l'objet Marshalled de la demande au servlet Jersey dans l'objet emp. La réponse sera créée avec le résultat au statut 201 (Créé).
Web.xml
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Restful Web Application</display-name>
<servlet>
<servlet-name>jersey-serlvet</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.aditya.rest</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
Il s'agit du descripteur de déploiement d'API. Le nom d'affichage est évident car il se compose du nom de l'application. Il se compose du nom de servlet que nous utilisons et la classe de servlet comprend le nom complet du servlet.
De plus, param-name et param-value spécifient les fonctions requises pour l'application Web.
com.sun.jersey.api.json.POJOMappingFeature offre la possibilité de mapper JSON sur des objets java.
Le mappage de servlet mappe la fonctionnalité de servlet à un modèle d'URL spécifique.
Apache Tomcat 7: Téléchargez le programme d'installation de Windows à partir du lien officiel. https://tomcat.apache.org/download-70.cgi
Exécutez Tomcat7.exe et spécifiez le dossier dans lequel vous souhaitez installer Tomcat7.
Faites un clic droit sur la section serveur et sélectionnez "Nouveau> Serveur".
Sélectionnez Serveur Tomcat 7, puis sélectionnez Suivant.
Sélectionnez Parcourir et spécifiez le dossier d'installation de tomcat pour créer le serveur.
Faites un clic droit sur le projet et sélectionnez "Exécuter en tant que"> "Exécuter sur le serveur". Lorsque l'API est déployée, elle sera dans l'état suivant.
Sélectionnez Parcourir et spécifiez le dossier d'installation de tomcat pour créer le serveur.
Faites un clic droit sur le projet et sélectionnez "Exécuter en tant que"> "Exécuter sur le serveur". Lorsque l'API est déployée, elle sera dans l'état suivant.
Installez le client Insomnia, faites une nouvelle demande et utilisez l'URI suivant:
GET : http://localhost:8080/RESTfulExample/rest/json/empservice/get
POST : http://localhost:8080/RESTfulExample/rest/json/empservice/post
Les réactions suivantes peuvent être observées.
Vous pouvez également accéder à la même API en utilisant l'adresse IP publique de votre instance ECS, mais sa modification ne modifie pas l'URL de l'API.
GET - http://:8080/RESTfulExample/rest/json/empservice/get
POST - http://:8080/RESTfulExample/rest/json/empservice/post
Dans un environnement de production, vous pouvez économiser de l'argent en utilisant une image de serveur Windows version 1709 qui fournit uniquement un accès par console, mais Instances ECS Vous pouvez réduire beaucoup de logiciels sur ja / product / ecs) et améliorer les performances.
Vous devez également utiliser un équilibreur de charge de serveur pour les API où nous prévoyons d'utiliser plusieurs images ECS et de les mettre à l'échelle.
L'authentification de type OAuth peut être introduite dans l'API pour éviter les abus et accroître la sécurité.
De plus, afin d'améliorer la fonction de sécurité de l'API, Alibaba Cloud DNS et [Anti-DDOS Pro](https: // www. Vous pouvez envisager d'utiliser alibabacloud.com/en/product/ddos-pro).