Menambahkan pengelolaan API

Cloud Endpoints Frameworks menyediakan fitur pengelolaan API yang sebanding dengan fitur yang disediakan 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 akan mengumpulkan dan melaporkan telemetri. Anda dapat melihat metrik untuk API di halaman Endpoints > Services di Google Cloud konsol.

Fitur pengelolaan API yang tersedia di Endpoints Frameworks mencakup:

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

Jika Anda tidak menambahkan pengelolaan API, API Anda akan tetap menayangkan permintaan, tetapi API Anda tidak akan muncul di halaman Endpoints > Services di Google Cloud konsol, dan fungsi yang disediakan oleh Endpoints, seperti logging, monitoring, dan menetapkan 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 Google Cloud project ID dalam 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 sehingga 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 membuat 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 build 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 pertama kali Anda men-deploy openapi.json, layanan Endpoints baru akan dibuat dengan nama YOUR_PROJECT_ID.appspot.com. Setelah berhasil diselesaikan, baris yang mirip dengan berikut ini 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 bertambah dalam ID konfigurasi layanan.

    Jika Anda perlu menampilkan ID konfigurasi layanan lagi, jalankan perintah berikut, tetapi ganti YOUR_PROJECT_ID dengan project ID dari Google Cloud project 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 mengetahui informasi selengkapnya tentang cara menulis dokumen OpenAPI, lihat Ringkasan OpenAPI.

  8. Edit file appengine-web.xml Anda 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 Google Cloud konsol untuk project Anda:

    Buka halaman Layanan Endpoints