All Products
Search
Document Center

:Kembangkan aplikasi RESTful (tidak direkomendasikan)

Last Updated:Nov 09, 2025

Topik ini menjelaskan cara mengembangkan aplikasi RESTful di High-Speed Service Framework (HSF) dan mengimplementasikan registrasi layanan serta penemuan layanan. dan Serverless App Engine (SAE) mendukung aplikasi Spring Cloud asli. Oleh karena itu, kami menyarankan Anda untuk tidak menggunakan HSF dalam pengembangan aplikasi RESTful.

Informasi latar belakang

Untuk informasi lebih lanjut tentang cara mengembangkan aplikasi dalam kerangka kerja Spring Cloud asli, lihat atau Hosting Aplikasi Spring Cloud di SAE.

Registrasi layanan dan penemuan layanan

Topik ini memberikan contoh sederhana tentang cara mengembangkan aplikasi RESTful dan mengimplementasikan registrasi layanan serta penemuan layanan di lingkungan lokal.

  1. Buat penyedia layanan.
    Penyedia layanan menyediakan layanan echo sederhana dan mendaftarkan dirinya ke registri layanan.
    1. Buat proyek aplikasi RESTful bernama sc-vip-server.
    2. Tambahkan dependensi yang diperlukan ke file 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>

      Jika Anda tidak ingin menetapkan induk proyek menjadi spring-boot-starter-parent, Anda dapat menambahkan dependencyManagement dan atur scope=import untuk mengelola dependensi.

      <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. Buat aplikasi penyedia layanan, di mana anotasi @EnableDiscoveryClient mengaktifkan registrasi layanan dan penemuan layanan untuk aplikasi tersebut.
      @SpringBootApplication
          @EnableDiscoveryClient
          public class ServerApplication {
      
              public static void main(String[] args) {
                  PandoraBootstrap.run(args);
                  SpringApplication.run(ServerApplication.class, args);
                  PandoraBootstrap.markStartupAndWait();
              }
          }
    4. Buat EchoController untuk menyediakan layanan echo sederhana.
      @RestController
          public class EchoController {
              @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
              public String echo(@PathVariable String string) {
                  return string;
              }
          }
    5. Konfigurasikan nama aplikasi dan nomor port pendengar di file application.properties di direktori resources.
      spring.application.name=service-provider
      server.port=18081
  2. Buat konsumen layanan.
    Dalam contoh ini, konsumen layanan dibuat untuk memanggil penyedia layanan menggunakan RestTemplate, AsyncRestTemplate, dan FeignClient.
    1. Buat proyek aplikasi RESTful bernama sc-vip-client.
    2. Tambahkan dependensi yang diperlukan ke file 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>

      FeignClient digunakan dalam contoh ini untuk demonstrasi. Dibandingkan dengan penyedia layanan sc-vip-server, file pom.xml berisi dependensi spring-cloud-starter-feign.

    3. Aktifkan registrasi layanan dan penemuan layanan untuk sc-vip-client. Ini sama seperti sc-vip-server. Dibandingkan dengan sc-vip-server, Anda juga harus menambahkan dua anotasi berikut untuk menggunakan RestTemplate, AsyncRestTemplate, dan FeignClient:
      • Tambahkan anotasi @LoadBalanced untuk menggabungkan RestTemplate dan AsyncRestTemplate dengan penemuan layanan.
      • Gunakan anotasi @EnableFeignClients untuk mengaktifkan 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. Konfigurasikan nama layanan dan permintaan HTTP dari metode HTTP sebelum menggunakan FeignClient dari EchoService. Di proyek sc-vip-server, atur nama layanan menjadi service-provider.
      @FeignClient(name = "service-provider")
          public interface EchoService {
              @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
              String echo(@PathVariable("str") String str);
          }
    5. Buat controller untuk pengujian panggilan.
      @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);
         }
      }
      Deskripsi kode:
      • /echo-rest/ memanggil layanan dari penyedia layanan menggunakan RestTemplate.
      • /echo-async-rest/ memanggil layanan dari penyedia layanan menggunakan AsyncRestTemplate.
      • /echo-feign/ memanggil layanan dari penyedia layanan menggunakan FeignClient.
    6. Konfigurasikan nama aplikasi dan nomor port pendengar.
      spring.application.name=service-consumer
      server.port=18082
  3. Lakukan pengembangan dan debugging kode lokal.
    1. Mulai pusat konfigurasi ringan.
      Pusat konfigurasi ringan harus dimulai untuk pengembangan dan debugging kode lokal, yang mencakup registri layanan ringan SAE untuk penyedia layanan. Untuk informasi lebih lanjut tentang pusat konfigurasi ringan, lihat Mulai Pusat Konfigurasi Ringan.
    2. Mulai aplikasi.
      • Mulai aplikasi di lingkungan pengembangan terintegrasi (IDE)

        Untuk memulai aplikasi di IDE, atur parameter startup -Dvipserver.server.port=8080 di opsi VM dan mulai aplikasi dengan memanggil metode utama. Parameter ini hanya ditambahkan ketika aplikasi diterapkan di lingkungan lokal dan pusat konfigurasi ringan digunakan. Ketika aplikasi diterapkan di SAE, hapus parameter ini. Jika tidak, aplikasi tidak dapat dirilis atau berlangganan sesuai harapan.

        Pusat konfigurasi ringan dan aplikasi diterapkan pada instance yang berbeda dan konfigurasi mereka harus ditambahkan ke file hosts. Untuk informasi lebih lanjut, lihat Mulai Pusat Konfigurasi Ringan.

      • Mulai aplikasi menggunakan FatJar
        1. Tambahkan plug-in pengemasan FatJar.

          Untuk mengemas proyek pandora-boot ke dalam paket FatJar menggunakan Maven, tambahkan plug-in berikut ke pom.xml. Untuk mencegah konflik dengan plug-in pengemasan lainnya, jangan tambahkan konfigurasi plug-in FatJar lainnya ke bidang plugin di 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. Setelah Anda menambahkan plug-in, di direktori home proyek, jalankan perintah Maven mvn clean package untuk pengemasan. Kemudian, Anda dapat melihat paket FatJar di direktori target.
        3. Mulai aplikasi dengan menjalankan perintah Java berikut:
          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
          Catatan Jalur yang ditentukan di -Dpandora.location harus berupa jalur penuh yang ditempatkan sebelum sc-vip-server-0.0.1-SNAPSHOT.jar.
      Mulai konsumen layanan dan panggil penyedia layanan. Panggilan berhasil.Develop RESTful applications in HSF and deploy them in EDAS
  4. Pemecahan Masalah FAQ.
    • Mengapa saya tidak dapat mengaktifkan penemuan layanan menggunakan AsyncRestTemplate?

      Anda dapat mengaktifkan penemuan layanan menggunakan AsyncRestTemplate hanya di Spring Cloud Dalston dan versi yang lebih baru. Untuk informasi lebih lanjut, lihat Permintaan Tarik.

    • Apa yang dapat saya lakukan ketika plug-in pengemasan FatJar bertentangan dengan plug-in lainnya?

      Untuk mencegah konflik dengan plug-in pengemasan lainnya, jangan tambahkan konfigurasi plug-in FatJar lainnya ke bidang plugin di build.

    • Bisakah taobao-hsf.sar disertakan selama pengemasan?

      Ya, Anda dapat menambahkan taobao-hsf.sar ke dalam paket. Namun, kami sarankan Anda tidak menambahkannya ke dalam paket.

      Anda dapat memodifikasi pandora-boot-maven-plugin dengan mengatur excludeSar ke false sehingga taobao-hsf.sar secara otomatis ditambahkan ke dalam paket selama pengemasan.
      <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>
      Dengan cara ini, paket dapat dimulai tanpa mengonfigurasi alamat pandora-boot-maven-plugin.
      java -jar  -Dvipserver.server.port=8080 sc-vip-server-0.0.1-SNAPSHOT.jar

      Kembalikan konfigurasi untuk mengecualikan taobao-hsf.sar sebelum Anda menerapkan aplikasi di SAE.