Menambahkan pengelolaan API

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

Fitur pengelolaan API yang tersedia di Endpoints Frameworks meliputi:

Agar API Anda dikelola oleh Endpoints, Anda harus men-deploy dokumen OpenAPI yang mendeskripsikan API Anda 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 melayani permintaan, tetapi API Anda tidak muncul di halaman Endpoints > Services di konsolGoogle Cloud , dan fungsi yang disediakan oleh Endpoints, seperti logging, pemantauan, dan penetapan kuota, tidak tersedia.

Untuk menambahkan pengelolaan API ke API Anda:

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

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

    Maven

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

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

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

    Gradle

    1. Cari def projectId, lalu ganti YOUR_PROJECT_ID dengan Google Cloud project ID 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 Anda, 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 Endpoints Frameworks sisi server, yang menghasilkan dokumen OpenAPI:

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

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

    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 Anda men-deploy openapi.json untuk pertama kalinya, 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 ditambah dalam 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 dan men-deploy dokumen OpenAPI Anda sendiri, bukan menggunakan dokumen yang dibuat. Cukup ganti openapi.json di atas dengan jalur ke dokumen OpenAPI Anda. Untuk mengetahui informasi selengkapnya tentang cara menulis dokumen OpenAPI, lihat Ringkasan OpenAPI.

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

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

    Ganti ${endpoints.project.id} dengan Google Cloud project ID 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 Anda, buka halaman Endpoints > Services di konsol Google Cloud untuk project Anda:

    Buka halaman Endpoints Services