Какое у меня имя бэкэнд API? Где это находится? Вызов API-интерфейса конечной точки Google Cloud из Android Studio Client

Я хотел бы использовать Google Cloud Endpoint v2 для подключения к App Engine (и, в конечном итоге, Google Cloud SQL (НЕ Firebase, как я буду делать сложные запросы)) в моем проекте Android Studio (v3.3).

Облачный Google SDK, OpenAPI, конфигурация конечных точек работает (он может получить эхо "привет мир" через Windows PowerShell), и я создал клиентские библиотеки, следуя этому руководству: https://cloud.google.com/endpoints/docs/frameworks/java/gen_clients

Я импортировал свои клиентские библиотеки в файл проекта Android Studio Libs и в настоящее время следую этому руководству по вызову бэкэнд-API из клиента Android Studio: https://cloud.google.com/endpoints/docs/frameworks/java/calling-from-android

После редактирования файлов Gradle он предлагает заменить "Tictactoe" в приведенном ниже коде на имя вашего внутреннего API

Tictactoe.Builder builder = new Tictactoe.Builder(
    AndroidHttp.newCompatibleTransport(), new GsonFactory(), null);
service = builder.build();

Я потратил 8 часов, пытаясь понять, что это будет. Я не могу найти файл в импортированных библиотеках, который работает. Я пытался использовать свой идентификатор проекта Google Cloud самостоятельно или после него.appspot.com, но ничего не работает.

Я предполагаю, что это должно быть где-то в моем файле проекта, мне просто нужно знать, где. А незнание того, как это называется, усложняет поиск.

Примечание: сайт Google Cloud предлагает задать технические вопросы по stackru

1 ответ

Решение

Это название происходит от нескольких @Api аннотации, которые устанавливаются при настройке API конечных точек. Похоже, вы, наверное, начали с примера appengine-java8 / endpoints-v2-backend, который имеет следующее объявление:

@Api(
    name = "echo",
    version = "v1",
    namespace =
    @ApiNamespace(
        ownerDomain = "echo.example.com",
        ownerName = "echo.example.com",
        packagePath = ""
    ),
...

Вы можете увидеть полное определение в Echo.java.

Важные вещи, на которые следует обратить внимание: name поле, а ownerDomain от namespace, Оба из них вместе используются для генерации пакета Java, к которому будет принадлежать код, но сегменты ownerDomain обратный путь (как стандарт в пакетах Java, которые представляют иерархию в противоположном направлении от обычных сегментов DNS), поэтому пакет Java в итоге оказывается com.example.echo.echo, Класс Java просто назван в честь @Api.name поле (с большой буквы), поэтому имя класса просто Echo,

Итак, полный класс Java, который вы ищете:

com.example.echo.echo.Echo

или, для вашего точного фрагмента кода:

com.example.echo.echo.Echo.Builder

Это может сбивать с толку, потому что в этом примере слово "эхо" используется много раз, поэтому сложно определить, где именно echo исходит от, но вот еще один пример:

Допустим, вы установили @Api.name в myApiName, а затем установить @Api.namespace.ownerDomain в mycompany.com, Полный класс Java, который вы будете использовать из сгенерированной клиентской библиотеки:

com.mycompany.myApiName.MyApiName

Однако я бы не рекомендовал вам пытаться вручную выяснить, какие Java-пакет и имя класса основаны на этих правилах. Гораздо проще сделать, просто посмотреть на клиентскую библиотеку, созданную конечными точками.

Когда ты бежишь gradle endpointsClientLibsкоманда выводит местоположение файла, который он сгенерировал как .zip файл. Все, что вам нужно сделать, это разархивировать этот файл и изучить весь сгенерированный код в нем, чтобы легко увидеть, как выглядит структура пакета Java, и даже точные определения классов, которые Endpoints генерирует для вас.

Если у вас возникли проблемы с поиском этих классов в вашей IDE, я хотел бы знать, не могли ли вы случайно пропустить шаги 4-7 из инструкции Генерация клиентской библиотеки:

4) Unzip the file using the unzip utility, or use another ZIP-compatible unarchiving utility:

unzip ./echo-v1-java.zip

5) Change directory: cd echo.

6) Build the client library:

gradle build

The output is in the `build/libs` directory. The exact filename depends on the version of the Java client. It is something like echo-v1-1.23.0-SNAPSHOT.jar.

7) Add the client library JAR to your Java or Android app.
Другие вопросы по тегам