← Cloudflare Flagship / flagship
Конфигурация
Чтобы использовать Flagship в Cloudflare Worker, добавьте привязку Flagship в файл конфигурации Wrangler. Привязка дает вашему Worker доступ к env.FLAGS, который предоставляет методы для оценки флагов функций.
Добавление привязки
Добавьте flagship блок в файл конфигурации Wrangler с именем привязки и идентификатором вашего приложения.
{
"flagship": [
{
"binding": "FLAGS",
"app_id": "<APP_ID>",
},
],
}[[flagship]]
binding = "FLAGS"
app_id = "<APP_ID>"Замените <APP_ID> с ID приложения из вашего приложения Flagship. Если вы ещё не создали приложение, см. Руководство по началу работы. binding поле задает имя, которое вы используете для доступа к Flagship в коде Worker (например, env.FLAGS).
Привязка к нескольким приложениям
Один Worker может привязываться к нескольким приложениям Flagship. Чтобы задать несколько привязок, используйте форму массива:
{
"flagship": [
{
"binding": "FLAGS",
"app_id": "<APP_ID_1>",
},
{
"binding": "EXPERIMENT_FLAGS",
"app_id": "<APP_ID_2>",
},
],
}[[flagship]]
binding = "FLAGS"
app_id = "<APP_ID_1>"
[[flagship]]
binding = "EXPERIMENT_FLAGS"
app_id = "<APP_ID_2>"Каждая привязка доступна как отдельное свойство env объект (например, env.FLAGS и env.EXPERIMENT_FLAGS).
Генерация типов
После добавления привязки выполните npx wrangler types чтобы сгенерировать типы TypeScript. При этом создаётся Env интерфейс, где каждая привязка типизирована как Flagship.
interface Env {
FLAGS: Flagship;
EXPERIMENT_FLAGS: Flagship;
}Используйте привязку
Вызывайте методы оценки для env.FLAGS чтобы получать значения флагов во время выполнения. Каждый метод принимает ключ флага, значение по умолчанию и необязательный контекст оценки.
export default {
async fetch(request, env) {
const isEnabled = await env.FLAGS.getBooleanValue("my-feature", false, {
userId: "user-42",
});
return new Response(isEnabled ? "Feature is on" : "Feature is off");
},
};export default {
async fetch(request: Request, env: Env): Promise<Response> {
const isEnabled = await env.FLAGS.getBooleanValue("my-feature", false, {
userId: "user-42",
});
return new Response(isEnabled ? "Feature is on" : "Feature is off");
},
};См. справочник по API привязки для полного списка методов.
Локальная разработка
Привязки Flagship работают с wrangler dev. Локальные Worker используют активное приложение Flagship, настроенное с помощью app_id. Локального хранилища флагов не существует. Перед тестированием оценок убедитесь, что локальная конфигурация Wrangler указывает на действующее приложение Flagship.