Menambahkan pengelolaan API

Cloud Endpoints Frameworks menyediakan fitur pengelolaan API yang sebanding dengan fitur yang disediakan Extensible Service Proxy (ESP) untuk Cloud Endpoints. Framework Endpoint menyertakan gateway API 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 Anda di halaman Endpoint > Services di Konsol Google Cloud.

Fitur pengelolaan API yang tersedia di Framework Endpoint meliputi:

Agar API dapat dikelola oleh Endpoint, 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 Endpoint mengelola API Anda.

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

Untuk menambahkan pengelolaan API ke API:

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

  2. Pastikan Anda menetapkan project ID Google Cloud di 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 project ID 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. Pada 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 membuat dokumen OpenAPI:

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

      endpointsServer {
        // Endpoints Framework Plugin server-side configuration
        hostname = "${projectId}.appspot.com"
      }
  5. Setelah memodifikasi dependensi, bersihkan project Anda, 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 Endpoint baru akan dibuat dengan nama YOUR_PROJECT_ID.appspot.com. Jika berhasil diselesaikan, baris yang mirip dengan yang berikut ini akan menampilkan ID konfigurasi layanan dan nama layanan:

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

    Pada 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 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 dan men-deploy dokumen OpenAPI sendiri, bukan menggunakan dokumen yang telah dibuat. Cukup ganti openapi.json di atas dengan jalur ke dokumen OpenAPI Anda. Untuk mengetahui informasi selengkapnya tentang penulisan 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 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.

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

    Buka halaman Layanan Endpoint