Tous les produits
Search
Centre de documentation

:Développer des applications RESTful (non recommandé)

Dernière mise à jour :Aug 11, 2026

Développez des applications RESTful dans le framework HSF et mettez en œuvre l'enregistrement et la découverte de services. Étant donné qu'SAE prend désormais en charge les applications Spring Cloud natives, cette méthode de développement n'est pas recommandée pour les nouveaux utilisateurs.

Informations contextuelles

Pour savoir comment développer des services à l'aide du framework Spring Cloud natif, consultez les rubriques et Héberger des applications Spring Cloud dans SAE.

Enregistrement et découverte de services

Cette section vous guide pas à pas dans le développement d'une application RESTful locale avec enregistrement et découverte de services.

Téléchargez le code source de démonstration :

  1. Créez un fournisseur de services.

    Ce fournisseur de services expose un service echo simple et s'enregistre auprès du registre de services.

    1. Créez un projet d'application RESTful nommé sc-vip-server.

    2. Ajoutez les dépendances requises au fichier pom.xml.

          <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>1.5.8.RELEASE</version>
              <relativePath/>
          </parent>
          <dependencies>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-vipclient</artifactId>
                  <version>1.3</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-pandora</artifactId>
                  <version>1.3</version>
              </dependency>
          </dependencies>
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                      <artifactId>spring-cloud-dependencies</artifactId>
                      <version>Dalston.SR4</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
              </dependencies>
          </dependencyManagement>

      Si vous ne souhaitez pas définir le parent du projet sur spring-boot-starter-parent, ajoutez une section dependencyManagement et définissez scope="import" pour gérer les dépendances.

      <dependencyManagement>
                  <dependencies>
                      <dependency>
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-dependencies</artifactId>
                          <version>1.5.8.RELEASE</version>
                          <type>pom</type>
                          <scope>import</scope>
                      </dependency>
                  </dependencies>
      </dependencyManagement>
    3. Créez l'application fournisseur de services. Utilisez l'annotation @EnableDiscoveryClient pour activer l'enregistrement et la découverte de services.

      @SpringBootApplication
          @EnableDiscoveryClient
          public class ServerApplication {
              public static void main(String[] args) {
                  PandoraBootstrap.run(args);
                  SpringApplication.run(ServerApplication.class, args);
                  PandoraBootstrap.markStartupAndWait();
              }
          }
    4. Créez un EchoController pour fournir un service echo simple.

      @RestController
          public class EchoController {
              @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
              public String echo(@PathVariable String string) {
                  return string;
              }
          }
    5. Dans le fichier application.properties situé dans le répertoire resources, configurez le nom de l'application et le port d'écoute.

      spring.application.name=service-provider
      server.port=18081
  2. Créez un consommateur de services.

    Cet exemple crée un consommateur de services qui appelle le fournisseur de services à l'aide de RestTemplate, AsyncRestTemplate et FeignClient.

    1. Créez un projet d'application RESTful nommé sc-vip-client.

    2. Ajoutez les dépendances requises au fichier pom.xml.

      <parent>
              <groupId>org.springframework.boot</groupId>
              <artifactId>spring-boot-starter-parent</artifactId>
              <version>1.5.8.RELEASE</version>
              <relativePath/>
          </parent>
          <dependencies>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-vipclient</artifactId>
                  <version>1.3</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-pandora</artifactId>
                  <version>1.3</version>
              </dependency>
              <dependency>
                  <groupId>org.springframework.cloud</groupId>
                  <artifactId>spring-cloud-starter-feign</artifactId>
              </dependency>
          </dependencies>
          <dependencyManagement>
              <dependencies>
                  <dependency>
                      <groupId>org.springframework.cloud</groupId>
                      <artifactId>spring-cloud-dependencies</artifactId>
                      <version>Dalston.SR4</version>
                      <type>pom</type>
                      <scope>import</scope>
                  </dependency>
              </dependencies>
          </dependencyManagement>

      Cet exemple utilise FeignClient à des fins de démonstration. Contrairement au fournisseur de services (sc-vip-server), le fichier pom.xml du consommateur inclut une dépendance supplémentaire spring-cloud-starter-feign.

    3. Pour utiliser RestTemplate, AsyncRestTemplate et FeignClient, activez également l'enregistrement et la découverte de services (comme vous l'avez fait pour sc-vip-server) et ajoutez les deux configurations suivantes.

      • Ajoutez l'annotation @LoadBalanced pour intégrer RestTemplate et AsyncRestTemplate à la découverte de services.

      • Ajoutez l'annotation @EnableFeignClients pour activer FeignClient.

        @SpringBootApplication
            @EnableDiscoveryClient
            @EnableFeignClients
            public class ConsumerApplication {
                @LoadBalanced
                @Bean
                public RestTemplate restTemplate() {
                    return new RestTemplate();
                }
                @LoadBalanced
                @Bean
                public AsyncRestTemplate asyncRestTemplate(){
                    return new AsyncRestTemplate();
                }
                public static void main(String[] args) {
                    PandoraBootstrap.run(args);
                    SpringApplication.run(ConsumerApplication.class, args);
                    PandoraBootstrap.markStartupAndWait();
                }
            }
    4. Avant d'utiliser FeignClient pour EchoService, configurez le nom du service et mappez la méthode à la requête HTTP correspondante. Dans le projet sc-vip-server, le nom du service est configuré comme service-provider.

      @FeignClient(name = "service-provider")
          public interface EchoService {
              @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
              String echo(@PathVariable("str") String str);
          }
    5. Créez un Controller pour tester les appels de service.

      @RestController
      public class Controller {
         @Autowired
         private RestTemplate restTemplate;
         @Autowired
         private AsyncRestTemplate asyncRestTemplate;
         @Autowired
         private  EchoService echoService;
         @RequestMapping(value = "/echo-rest/{str}", method = RequestMethod.GET)
         public String rest(@PathVariable String str) {
             return restTemplate.getForObject("http://service-provider/echo/" + str, String.class);
         }
         @RequestMapping(value = "/echo-async-rest/{str}", method = RequestMethod.GET)
         public String asyncRest(@PathVariable String str) throws Exception{
             ListenableFuture<ResponseEntity<String>> future = asyncRestTemplate.
                     getForEntity("http://service-provider/echo/"+str, String.class);
             return future.get().getBody();
         }
         @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
         public String feign(@PathVariable String str) {
             return echoService.echo(str);
         }
      }

      Le code implémente trois endpoints pour les tests :

      • /echo-rest/ : Vérifie l'appel au fournisseur de services à l'aide de RestTemplate.

      • /echo-async-rest/ : Vérifie l'appel au fournisseur de services à l'aide d'AsyncRestTemplate.

      • /echo-feign/ : Vérifie l'appel au fournisseur de services à l'aide de FeignClient.

    6. Configurez le nom de l'application et le port d'écoute.

      spring.application.name=service-consumer
      server.port=18082
  3. Développez et déboguez localement.

    1. Démarrez le centre de configuration léger.

      Pour le développement et le débogage locaux, utilisez le centre de configuration léger. Il fournit une version légère du composant côté serveur d'enregistrement et de découverte de services utilisé par

      EDAS

      et

      SAE

      . Pour plus d'informations, consultez la rubrique

      Démarrer le centre de configuration et d'enregistrement léger

      .

    2. Démarrez l'application.

      • Démarrage depuis un IDE

        Pour démarrer l'application depuis votre IDE, ajoutez l'option VM -Dvipserver.server.port=8080 puis exécutez la méthode main. Remarque : Ce paramètre est requis uniquement pour le développement local avec le centre de configuration léger. Vous devez supprimer ce paramètre lorsque vous déployez l'application sur ou SAE. Sinon, l'application risque de ne pas pouvoir publier ou s'abonner aux services.

        Si le centre de configuration léger et votre application se trouvent sur des machines différentes, configurez les liaisons d'hôte. Pour plus d'informations, consultez la rubrique Démarrer le centre de configuration et d'enregistrement léger.

      • Démarrage depuis un FatJar

        1. Ajoutez le plug-in d'emballage FatJar.

          Pour empaqueter le projet pandora-boot dans un FatJar à l'aide de Maven, ajoutez le plug-in suivant à votre fichier pom.xml. Pour éviter les conflits, n'ajoutez pas d'autres plug-ins FatJar à la section <plugins> de la configuration de build.

          <build>
              <plugin>
                  <groupId>com.taobao.pandora</groupId>
                      <artifactId>pandora-boot-maven-plugin</artifactId>
                      <version>2.1.9.1</version>
                      <executions>
                         <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                         </execution>
                       </executions>
              </plugin>
          </build>
        2. Après avoir ajouté le plug-in, exécutez la commande mvn clean package dans le répertoire racine du projet. Le fichier FatJar est généré dans le répertoire target.

        3. Démarrez l'application à l'aide d'une commande Java.

          java -Dvipserver.server.port=8080 -Dpandora.location=/Users/{$username}/.m2/repository/com/taobao/pandora/taobao-hsf.sar/dev-SNAPSHOT/taobao-hsf.sar-dev-SNAPSHOT.jar  -jar sc-vip-server-0.0.1-SNAPSHOT.jar
          Remarque

          Le chemin spécifié par

          -Dpandora.location

          doit être un chemin absolu et doit être placé avant l'argument

          -jar

          .

      Démarrez les services et appelez les endpoints. La sortie indique que tous les appels ont réussi.

      → ~ curl http://localhost:18082/echo-rest/rest-test
      rest-test%
      → ~ curl http://localhost:18082/echo-async-rest/async-rest-test
      async-rest-test%
      → ~ curl http://localhost:18082/echo-feign/feign-test
      feign-test%
  4. Résolvez les problèmes courants.

    • AsyncRestTemplate ne peut pas se connecter à la découverte de services.

      La prise en charge de la découverte de services via AsyncRestTemplate a été ajoutée dans Spring Cloud Dalston. Vous devez utiliser cette version ou une version ultérieure. Pour plus d'informations, consultez cette demande de fusion (pull request).

    • Conflits avec le plug-in d'emballage FatJar.

      Pour éviter les conflits, n'ajoutez pas d'autres plug-ins FatJar à la section <plugins> de la configuration de build.

    • Puis-je inclure taobao-hsf.sar dans le package ?

      Oui, mais cela n'est pas recommandé.

      Vous pouvez modifier la configuration de pandora-boot-maven-plugin en définissant

      excludeSar

      sur

      false

      . Cela inclut automatiquement taobao-hsf.sar dans le package.

      <plugin>
          <groupId>com.taobao.pandora</groupId>
          <artifactId>pandora-boot-maven-plugin</artifactId>
          <version>2.1.9.1</version>
          <configuration>
          <excludeSar>false</excludeSar>
          </configuration>
             <executions>
                 <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                  </execution>
          </executions>
      </plugin>

      De cette manière, vous pouvez démarrer l'application sans configurer l'emplacement de Pandora.

      java -jar  -Dvipserver.server.port=8080 sc-vip-server-0.0.1-SNAPSHOT.jar

      Avant de déployer l'application sur ou SAE, restaurez la configuration par défaut pour exclure le package SAR.