# # #go #google-cloud-platform #google-cloud-functions
Вопрос:
Я вижу в вызовах ListFunctions, что он возвращает все функции в проекте и указанном регионе. Я хотел бы отфильтровать по меткам, и я не вижу, чтобы ListFunctionsRequest принимал фильтр, чтобы отфильтровать его по меткам. Есть какие-нибудь предложения? Что-то вроде того, что поддерживает gcloud CLI: https://cloud.google.com/sdk/gcloud/reference/functions/list
Документация: https://pkg.go.dev/cloud.google.com/go/functions/apiv1#CloudFunctionsClient.Функции списка
Код из документов
ctx := context.Background()
c, err := functions.NewCloudFunctionsClient(ctx)
if err != nil {
// TODO: Handle error.
}
defer c.Close()
req := amp;functionspb.ListFunctionsRequest{
// TODO: Fill request struct fields.
}
it := c.ListFunctions(ctx, req)
for {
resp, err := it.Next()
if err == iterator.Done {
break
}
if err != nil {
// TODO: Handle error.
}
// TODO: Use resp.
_ = resp
}```
Комментарии:
1. Я не знаю ответа в данном случае. Некоторые API поддерживают
filters
, некоторые не поддерживают или не поддерживают все варианты использования фильтров. Если интерфейс командной строки поддерживает фильтр, а API этого не делает, то фильтр реализуется внутри интерфейса командной строки. Это означает, что вам также потребуется дублировать эту функцию фильтрации в своем коде. Чтобы проверить, создайте команду CLI и добавьте параметр командной строки--log-http
, чтобы увидеть фактический вызов REST API. Если фильтр не передается в API, то вы знаете, а) что вы должны написать этот код фильтра, или б) как фильтр кодируется в вызове API.
Ответ №1:
API облачных функций не поддерживает параметр запроса фильтра
Фильтрация gcloud выполняется с помощью интерфейса командной строки, а не API. Поэтому, если вы используете API напрямую, вам необходимо переопределить эту функцию фильтра.