Отправить ответ обратно клиенту после вызова API Google Compute Engine в узле JS
Я пытаюсь получить сведения о кластере Kubernetes из облака Google с помощью облака Google API Kubernetes для узла js.
Ниже приведен пример, который я нашел в документации Google.
var google = require('googleapis');
var container = google.container('v1');
authorize(function(authClient) {
var request = {
projectId: 'my-project-id',
zone: 'my-zone',
clusterId: 'my-cluster-id',
auth: authClient,
};
container.projects.zones.clusters.get(request, function(err, response){
if (err) {
console.error(err);
return;
}
// TODO: Change code below to process the `response` object and send the detail back to client.
console.log(JSON.stringify(response, null, 2));
});
});
function authorize(callback) {
google.auth.getApplicationDefault(function(err, authClient) {
if (err) {
console.error('authentication failed: ', err);
return;
}
if (authClient.createScopedRequired && authClient.createScopedRequired()) {
var scopes = ['https://www.googleapis.com/auth/cloud-platform'];
authClient = authClient.createScoped(scopes);
}
callback(authClient);
});
}
Поскольку API Google get является асинхронной функцией, как я могу вернуть ответ от API клиенту.
1 ответ
Вопрос в том, что вы хотите сделать с данными? Проблема не в том, что API является асинхронным или нет, этот фрагмент кода должен возвращать в консоли тот же JSON, который вы получили бы с помощью этого запроса:
GET https://container.googleapis.com/v1beta1/projects/[PROJECT ID]/locations/[ZONE]/clusters/[CLUSTER NAME]
Функция и обратный вызов должны заботиться о том, что она асинхронная.