Pertanyaan Mengapa API saya tidak muncul saat pemasangan?


Saya menduga ini disebabkan oleh bug berikut di Endpoint (jika valid) tapi saya juga yakin ada solusi di suatu tempat.

https://code.google.com/p/googleappengine/issues/detail?id=9050&can=4&colspec=ID%20Type%20Component%20Status%20Stars%20Summary%20Language%20Priority%20Owner%20Log

Langkah-langkah untuk mereproduksi:

  1. Ubah nama metode, nama API metode, atau daftar parameter di kelas Endpoint.
  2. Jalankan skrip endpoints.sh untuk menghasilkan file API.
  3. Periksa file API secara lokal dan saksikan perubahan yang ada di sana. Sejauh ini bagus.
  4. Terapkan ke versi aplikasi default di server.
  5. Periksa log untuk panggilan ke /_ah/spi/BackendService.getApiConfigs. Tidak ada kesalahan!
  6. Buka API Explorer dan kosongkan cache browser. Periksa API. Perubahan itu tidak ada.
  7. Permintaan file API langsung di browser, mis. https: // [app-id] .appspot.com / _ah / api / discovery / v1 / apis / [api-name] / v1 / rpc Perubahan tidak ada di sana.

Frustrasi dengan hal di atas, saya memutuskan untuk memulai sepenuhnya dari awal pada ID aplikasi baru. Saya masih tidak melihat API di API Explorer dan mendapatkan 404 di URL pada langkah 7 di atas!

Inilah kelas endpoint saya:

@Api(name = "ditto", version = "v1")
public class CategoryEndpoint extends BaseEndpoint {

    @SuppressWarnings("unused")
    private static final Logger log = Logger.getLogger(CategoryEndpoint.class.getName());

    @ApiMethod(name = "category.list")
    public WireCategory list() {
        Category root = categoryDao.getRoot();
        WireCategory wireRootCategory = new WireCategory(root);

        return wireRootCategory;
    }

}

Dan inilah file .api yang dihasilkan:

{
  "extends" : "thirdParty.api",
  "abstract" : false,
  "root" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/api",
  "name" : "ditto",
  "version" : "v1",
  "defaultVersion" : false,
  "adapter" : {
    "bns" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/spi",
    "deadline" : 10.0,
    "type" : "lily"
  },
  "auth" : {
    "allowCookieAuth" : false
  },
  "frontendLimits" : {
    "unregisteredUserQps" : -1,
    "unregisteredQps" : -1,
    "unregisteredDaily" : -1,
    "rules" : [ ]
  },
  "cacheControl" : {
    "type" : "no-cache",
    "maxAge" : 0
  },
  "methods" : {
    "ditto.category.list" : {
      "path" : "list",
      "httpMethod" : "GET",
      "scopes" : [ ],
      "audiences" : [ ],
      "clientIds" : [ ],
      "rosyMethod" : "ditto.api.CategoryEndpoint.list",
      "request" : {
        "body" : "empty"
      },
      "response" : {
        "body" : "autoTemplate(backendResponse)"
      }
    }
  },
  "descriptor" : {
    "schemas" : {
      "WireCategory" : {
        "id" : "WireCategory",
        "type" : "object",
        "properties" : {
          "webSafePath" : {
            "type" : "string"
          },
          "prettyPath" : {
            "type" : "string"
          },
          "children" : {
            "type" : "array",
            "items" : {
              "$ref" : "WireCategory"
            }
          },
          "path" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "name" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string",
            "format" : "int64"
          }
        }
      }
    },
    "methods" : {
      "ditto.api.CategoryEndpoint.list" : {
        "response" : {
          "$ref" : "WireCategory"
        }
      }
    }
  }
}

URL ini memberi saya 404 tempat saya berharap melihat API JSON saya:

https://eliot-dev-uk-ditto-do.appspot.com/_ah/api/discovery/v1/apis/ditto/v1

Ini membunuhku!

EDIT:

Inilah diff Saya baru saja melihat antara file .api yang dihasilkan oleh App Engine 1.7.5 dan 1.7.6. Tidak yakin mengapa URL telah berubah.

ditto-v1.api from 1.7.6:

    {
      "extends" : "thirdParty.api",
      "abstract" : false,
      "root" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/api",
      "name" : "ditto",
      "version" : "v1",
      "defaultVersion" : false,
      "adapter" : {
        "bns" : "https://1.eliot-dev-uk-ditto-do.appspot.com/_ah/spi",
        "deadline" : 10.0,
        "type" : "lily"
      }
      ...

    ditto-v1.api from 1.7.5:

     {
      "extends" : "thirdParty.api",
      "abstract" : false,
      "root" : "https://eliot-dev-uk-ditto-do.appspot.com/_ah/api",
      "name" : "ditto",
      "version" : "v1",
      "defaultVersion" : false,
      "adapter" : {
        "bns" : "http://eliot-dev-uk-ditto-do.appspot.com/_ah/spi",
        "deadline" : 10.0,
        "type" : "lily"
      }
      ...

4
2018-03-27 18:04


asal


Jawaban:


Seperti yang sudah Anda tunjukkan, itu karena masalah aneh di SDK 1.7.6, yang menambahkan itu 1. di awal url akar titik akhir dalam file .api ...

Saya sudah mencoba yang baru SDK 1.7.7 dan sepertinya itu terpecahkan ...


2
2018-04-11 10:59