Menambahkan pengelolaan API

Framework Cloud Endpoints menyediakan fitur pengelolaan API yang sebanding dengan fitur yang disediakan oleh Extensible Service Proxy (ESP) untuk Cloud Endpoints. Framework Endpoint menyertakan API gateway bawaan yang mencegat semua permintaan dan melakukan pemeriksaan yang diperlukan, seperti autentikasi, sebelum meneruskan permintaan ke backend API. Saat backend merespons, Framework Endpoint akan mengumpulkan dan melaporkan telemetri. Anda dapat melihat metrik untuk API di halaman Endpoints > Services di Konsol Google Cloud.

Fitur pengelolaan API yang tersedia di Framework Endpoints meliputi:

Agar API Anda dikelola oleh Endpoints, Anda harus men-deploy dokumen OpenAPI yang mendeskripsikan API menggunakan Spesifikasi OpenAPI versi 2.0. Halaman ini menjelaskan cara membuat dan men-deploy dokumen OpenAPI yang memungkinkan Endpoints mengelola API Anda.

Jika Anda tidak menambahkan pengelolaan API, API Anda tetap akan melayani permintaan, tetapi API Anda tidak akan muncul di halaman Endpoints > Services di Konsol Google Cloud, dan fungsi yang disediakan oleh Endpoints, seperti logging, pemantauan, dan penetapan kuota, tidak akan tersedia.

Untuk menambahkan pengelolaan API ke API Anda:

  1. Siapkan file pom.xml Maven atau file build.gradle Gradle seperti yang dijelaskan dalam Mengonfigurasi file build.

  2. Pastikan Anda menetapkan project ID Google Cloud dalam file build.

    Maven

    Telusuri <endpoints.project.id>, dan ganti YOUR_PROJECT_ID dengan project ID Google Cloud Anda. Contoh:

    <endpoints.project.id>example-project-12345</endpoints.project.id>

    <endpoints.project.id>YOUR_PROJECT_ID</endpoints.project.id>

    Gradle

    1. Telusuri def projectId, dan ganti YOUR_PROJECT_ID dengan ID project Google Cloud Anda. Contoh:

      def projectId = 'example-project-12345'

    2. Pastikan file build.gradle Anda berisi tugas replaceProjectId, yang menetapkan project ID dalam file appengine-web.xml dan web.xml.

      task replaceProjectId(type: Copy) {
          from 'src/main/webapp/WEB-INF/'
          include '*.xml'
          into "build/exploded-${archivesBaseName}/WEB-INF"
          expand(endpoints:[project:[id:projectId]])
          filteringCharset = 'UTF-8'
      }

  3. Dalam file web.xml project API, tambahkan konfigurasi filter servlet pengelolaan API:

    <!-- Add a filter that fetches the service config from service management. -->
    <filter>
        <filter-name>endpoints-api-configuration</filter-name>
        <filter-class>com.google.api.control.ServiceManagementConfigFilter</filter-class>
    </filter>
    
    <!-- Add a filter that performs Endpoints logging and monitoring. -->
    <filter>
        <filter-name>endpoints-api-controller</filter-name>
        <filter-class>com.google.api.control.extensions.appengine.GoogleAppEngineControlFilter</filter-class>
        <init-param>
            <param-name>endpoints.projectId</param-name>
            <param-value>${endpoints.project.id}</param-value>
        </init-param>
        <init-param>
            <param-name>endpoints.serviceName</param-name>
            <param-value>${endpoints.project.id}.appspot.com</param-value>
        </init-param>
    </filter>
    
    <filter-mapping>
        <filter-name>endpoints-api-configuration</filter-name>
        <servlet-name>EndpointsServlet</servlet-name>
    </filter-mapping>
    
    <filter-mapping>
        <filter-name>endpoints-api-controller</filter-name>
        <servlet-name>EndpointsServlet</servlet-name>
    </filter-mapping>
  4. Ubah konfigurasi build project API Anda:

    Maven

    1. Tambahkan dependensi pengelolaan API:

      <dependency>
        <groupId>com.google.endpoints</groupId>
        <artifactId>endpoints-management-control-appengine-all</artifactId>
        <version>1.0.14</version>
      </dependency>
    2. Sertakan plugin yang dapat Anda gunakan untuk membuat library klien dan dokumen OpenAPI, openapi.json:

      <plugin>
        <groupId>com.google.cloud.tools</groupId>
        <artifactId>endpoints-framework-maven-plugin</artifactId>
        <version>2.1.0</version>
        <configuration>
          <!-- plugin configuration -->
          <hostname>${endpoints.project.id}.appspot.com</hostname>
        </configuration>
      </plugin>

    Gradle

    1. Tambahkan dependensi pengelolaan API:

      compile 'com.google.endpoints:endpoints-management-control-appengine:1.0.14'
      compile 'com.google.endpoints:endpoints-framework-auth:1.0.14'
    2. Deklarasikan dependensi eksternal agar plugin diambil dari Maven Central:

      classpath 'com.google.cloud.tools:endpoints-framework-gradle-plugin:2.1.0'
    3. Gunakan plugin Gradle Framework Endpoints sisi server, yang menghasilkan dokumen OpenAPI:

      apply plugin: 'com.google.cloud.tools.endpoints-framework-server'
    4. Konfigurasikan nama layanan Endpoints Anda:

      endpointsServer {
        // Endpoints Framework Plugin server-side configuration
        hostname = "${projectId}.appspot.com"
      }
  5. Setelah mengubah dependensi, bersihkan project, lalu build API:

    Maven

        mvn clean
        mvn package

    Gradle

        gradle clean
        gradle build
  6. Buat dokumen OpenAPI, openapi.json:

    Maven

    mvn endpoints-framework:openApiDocs

    Gradle

    gradle endpointsOpenApiDocs
  7. Deploy dokumen OpenAPI:

     gcloud endpoints services deploy openapi.json
    

    Saat pertama kali men-deploy openapi.json, layanan Endpoints baru akan dibuat dengan nama YOUR_PROJECT_ID.appspot.com. Setelah berhasil diselesaikan, baris yang mirip dengan berikut akan menampilkan ID konfigurasi layanan dan nama layanan:

    Service Configuration 2017-02-13r0 uploaded for service example-project-12345.appspot.com
    

    Dalam contoh sebelumnya, 2017-02-13r0 adalah ID konfigurasi layanan. ID konfigurasi layanan terdiri dari stempel tanggal yang diikuti dengan nomor revisi. Jika Anda men-deploy openapi.json lagi, nomor revisi akan ditingkatkan di ID konfigurasi layanan.

    Jika Anda perlu menampilkan ID konfigurasi layanan lagi, jalankan perintah berikut, tetapi ganti YOUR_PROJECT_ID dengan project ID project Google Cloud Anda:

    gcloud endpoints configs list --service=YOUR_PROJECT_ID.appspot.com
    

    Anda dapat membuat dokumen OpenAPI Anda sendiri dan men-deploy-nya, bukan menggunakan dokumen yang dibuat. Cukup ganti openapi.json di atas dengan jalur ke dokumen OpenAPI Anda. Untuk informasi selengkapnya tentang cara menulis dokumen OpenAPI, lihat ringkasan OpenAPI.

  8. Edit file appengine-web.xml untuk menetapkan nilai untuk variabel lingkungan:

    <env-variables>
        <env-var name="ENDPOINTS_SERVICE_NAME" value="${endpoints.project.id}.appspot.com" />
    </env-variables>

    Ganti ${endpoints.project.id} dengan ID project Google Cloud Anda. Contoh:

    <env-var name="ENDPOINTS_SERVICE_NAME" value="example-project-12345.appspot.com" />
    
  9. Deploy ulang aplikasi Anda.

    Maven

    mvn appengine:deploy

    Gradle

    gradle appengineDeploy

  10. Uji API Anda dengan membuat beberapa permintaan ke API tersebut.

  11. Untuk melihat metrik API, buka halaman Endpoints > Services di Konsol Google Cloud untuk project Anda:

    Buka halaman Endpoints Services