Как вызвать GCP DocumentAI API из службы App Engine. net - PullRequest
0 голосов
/ 06 мая 2020

У меня есть служба GCP App Engine .netcore, которая должна использовать GCP Document AI API. К сожалению, пока нет клиента .netcore для доступа к Document AI API, поэтому я предполагаю, что мне нужно будет получить доступ с помощью вызова API Rest. Теперь проблема в том, как получить токен доступа для установки заголовка авторизации в запросе.

Любая помощь?

1 Ответ

2 голосов
/ 12 мая 2020

Я нашел 2 разных способа:

Первый: просто напишите простой NodeJS App Engine Service (или java или python, поскольку Document AI в настоящее время предлагает клиентские библиотеки для этих 3 языков), который действует как прокси между службой .netcore и API-интерфейсом Document AI.

Второй: создайте ключ Api в проекте CGP и возьмите его как переменную среды в службе .netcore. Затем просто отправьте и отправьте http-сообщение на URL-адрес, добавив ключ api в качестве параметра запроса, например:

https://eu-documentai.googleapis.com/v1beta2/projects/{YOUR_PROJECT_ID}/locations/eu/documents:process?key={API_KEY}

И все.

Что касается второго, я бы предпочел не иметь использовать ApiKey. Я хотел бы знать, как клиентские библиотеки, такие как nodejs, могут отправлять запрос в DocumentAI api без ApiKey. В моей первой попытке я ожидал, что использование HttpClient из учетных данных учетной записи службы GCP поможет, но я получил ошибку 403, указывающую на отсутствие ключа api. Я сделал следующее:

var cred = GoogleCredential.GetApplicationDefault()
var credential = cred.UnderlyingCredential as ServiceAccountCredential;
var uri = new Uri($"https://eu-documentai.googleapis.com/v1beta2/projects/{YOUR_PROJECT_ID}/locations/eu/documents:process;
var responseMessage = await credential.HttpClient.PostAsJsonAsync(uri, config);
var response = await responseMessage.Content.ReadAsStringAsync();

Как уже было сказано, это вызывает ошибку 403 с жалобой на отсутствие ApiKey. При использовании ApiKey вы можете использовать обычный HttpClient, использование HttpClient, созданного для учетных данных Google, не требуется

...