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

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

Работает конфигурация Google Cloud SDK, OpenAPI, Endpoints (он может получить эхо "hello world" через 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 предлагает задать технические вопросы по stackoverflow

1 Ответ

0 голосов
/ 08 февраля 2019

Это имя происходит от нескольких @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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...