Ana içeriğe geç

Yapılandırma

Çözümleme önceliği CLI argümanları > yapılandırma dosyası > varsayılanlar şeklindedir. Sonuç, resolveConfig tarafından döndürülen CliConfig nesnesidir.

CliConfig​

Temel yapılandırma türüdür. specPath dışındaki tüm alanlar isteğe bağlıdır.

AlanTürVarsayılanAçıklama
specPathstringzorunluOpenAPI 3.2 JSON belirtiminin yolu veya http(s):// URL'si
serverUrlstring(belirtimden)Belirtimdeki sunucu temel URL'sini geçersiz kılma
outputDirstring"./openapi-cli-report"Rapor dosyalarının yazılacağı dizin
formatsReportFormat[]["json","cli","html"]Üretilecek rapor biçimleri
filterFilterConfigundefinedTest edilecek işlemleri filtreleme
concurrencynumber5En fazla eşzamanlı istek sayısı; 1 ile 100 arasında tam sayı
timeoutnumber30000İstek başına ms cinsinden zaman aşımı; 1 ile 600000 arasında tam sayı. Uzak belirtim alınırken de geçerlidir
proxystringundefinedHTTP(S) proxy URL'si; ör. http://proxy:8080
tlsTlsConfigundefinedTLS ve sertifika yapılandırması
headersRecord<string, string>undefinedHer istekle gönderilen ek başlıklar
authAuthConfigundefinedKimlik doğrulama yapılandırması
variablesRecord<string, string>undefinedEklenecek Postman {{name}} değişkenleri
failOnErrorbooleantrueYalnızca CLI: başarısız testten sonra sıfırdan farklı kod döndürme; kütüphane çağıranları raporu denetler
envFilestringundefinedHer satırında KEY=VALUE bulunan .env dosyasının yolu
grpcReflectionbooleanotomatikgRPC: önce açık yapılandırma, sonra işlem uzantısı kullanılır; ikisi de yoksa proto yolu verilmediğinde etkinleştirilir
grpcProtoPathsstring[]undefinedgRPC: .proto dosya veya dizin yolları
mcpTransport"streamable-http" | "stdio""streamable-http"MCP: MCP işlemlerinin taşıması
mcpCommandstringundefinedMCP stdio: başlatılacak komut
mcpArgsstring[]undefinedMCP stdio: komut argümanları
mcpCwdstringundefinedMCP stdio: çalışma dizini

ReportFormat, "json" | "cli" | "html" birleşim türüdür.

Gelişmiş çalışma zamanı seçenekleri​

Aşağıdaki alanlar da CliConfig kapsamındadır. requester, maxEvents, maxStreamMs ve maxResponseSize bir JSON dosyasında verilebilir. Yapılandırmayı çözümledikten sonra signal, httpRuntime ve resolveTransport alanlarını koddan doğrudan runTests() işlevine geçirin; bunlar JSON yapılandırması değil, çalışma zamanı nesneleridir.

interface AdvancedRuntimeOptions {
requester?: {
followRedirects?: boolean;
maxRedirects?: number;
disableCookies?: boolean;
protocolVersion?: "http1" | "http2" | "auto";
};
maxEvents?: number;
maxStreamMs?: number;
maxResponseSize?: number;
signal?: AbortSignal;
httpRuntime?: { certificates?: unknown; fileResolver?: unknown };
resolveTransport?: (target: { protocol: string; url?: string }) => Promise<
Pick<CliConfig, "proxy" | "tls" | "httpRuntime">
>;
}

requester, HTTP yönlendirmelerini, çerezleri ve protokol seçimini kontrol eder. HTTP/SSE için maxEvents varsayılanı 50'dir; maxStreamMs verilmezse timeout kullanılır. maxResponseSize, istek çalışma zamanına iletilir. gRPC akış son süresi için maxStreamMs, ardından timeout, son olarak 30000 ms kullanır. signal çalıştırmayı iptal eder; httpRuntime, HTTP sertifika ve dosya işlemesini sağlar; resolveTransport, hedef başına taşıma ayarlarını çözümler.

DEFAULT_CONFIG​

Kütüphanenin dışa aktardığı yerleşik varsayılanlar nesnesi:

export const DEFAULT_CONFIG: Required<
Pick<
CliConfig,
"outputDir" | "formats" | "concurrency" | "timeout" | "failOnError" | "grpcReflection" | "mcpTransport"
>
> = {
outputDir: "./openapi-cli-report",
formats: ["json", "cli", "html"],
concurrency: 5,
timeout: 30000,
failOnError: true,
grpcReflection: true,
mcpTransport: "streamable-http",
};

FilterConfig​

AlanTürAçıklama
methodsstring[]Yalnızca bu HTTP yöntemlerini test etme; ör. ["get","post"]. Dosyalarda küçük harf kullanın; CLI girdisi normalleştirilir
pathsstring[]Yalnızca düzenli ifadelerden biriyle eşleşen yolları test etme; ifade geçersizse alt dize eşleştirmesi kullanılır
tagsstring[]Yalnızca bu etiketlerden birini taşıyan işlemleri test etme
operationIdsstring[]Yalnızca tam olarak bu operationId değerlerini test etme

Hiç anahtarı olmayan filtre undefined olarak çözümlenir; tüm işlemler çalışır.

TlsConfig​

AlanTürAçıklama
caCertstringPEM biçiminde CA sertifika paketinin yolu
clientCertstringmTLS için PEM istemci sertifikasının yolu
clientKeystringmTLS için PEM istemci özel anahtarının yolu
strictSSLbooleanfalse olduğunda TLS sertifika doğrulamasını atlama; güvenli değildir
pfxstringPFX sertifika paketinin yolu; gRPC bunun yerine PEM gerektirir
passphrasestringŞifrelenmiş sertifika materyalinin parolası

Not: CLI seçeneği --insecure, tls.strictSSL = false değerine karşılık gelir; yani doğrulamayı devre dışı bırakır.

AuthConfig​

AlanTürAçıklama
typeAuthConfig["type"]Kimlik doğrulama şeması; desteklenen adlar aşağıdadır
parametersRecord<string, string | number | boolean>İstek çalışma zamanına iletilen şemaya özgü parametreler
tokenstringtype: "bearer" için Bearer belirteci
usernamestringtype: "basic" için kullanıcı adı
passwordstringtype: "basic" için parola
keystringtype: "apikey" için API anahtarı adı
valuestringtype: "apikey" için API anahtarı değeri
in"header" | "query"API anahtarının yerleştirileceği konum

Desteklenen type değerleri bearer, basic, apikey, none, digest, oauth1, oauth2, jwt, hawk, aws4, ntlm, asap ve edgegrid şeklindedir. Kullanılabilirlik ve gerekli parametreler protokole ve istek çalışma zamanına bağlıdır; yalnızca ad belirtmek kimlik doğrulamayı yapılandırmaz.

CLI seçeneği --bearer şu anda yalnızca { type: "bearer", token } üretir. Daha kapsamlı basic / apikey yapılandırmaları dosyadan verilir.

JSON yapılandırma dosyası​

Dosya, Partial<CliConfig> ile eşleşen düz JSON'dur. --config <path> / -c ile verin. CLI argümanları her zaman dosya değerlerinden önce gelir.

{
"specPath": "./openapi.json",
"serverUrl": "https://api.staging.example.com",
"outputDir": "./reports",
"formats": ["json", "html"],
"concurrency": 10,
"timeout": 15000,
"failOnError": true,
"proxy": "http://proxy.corp:8080",
"tls": {
"strictSSL": true,
"caCert": "./ca-bundle.pem",
"clientCert": "./client.crt",
"clientKey": "./client.key"
},
"headers": {
"X-API-Key": "${API_KEY}",
"X-Environment": "staging"
},
"auth": {
"type": "bearer",
"token": "${BEARER_TOKEN}"
},
"variables": {
"host": "api.staging.example.com"
},
"filter": {
"methods": ["get", "post"],
"tags": ["v2", "public"],
"paths": ["^/api/v2"],
"operationIds": ["getUser", "createUser"]
},
"grpcReflection": true,
"grpcProtoPaths": ["./proto"],
"mcpTransport": "streamable-http",
"mcpCommand": "npx",
"mcpArgs": ["-y", "@modelcontextprotocol/server-everything"],
"mcpCwd": "./mcp-servers"
}

Eksik dosya Config file not found: <path>, geçersiz JSON ise Invalid config file (must be JSON) hatasını oluşturur.

Ortam değişkeni genişletmesi​

Bir .env dosyası --env / envFile ile yüklendikten sonra ${VAR_NAME} başvuruları şu dize alanlarında genişletilir:

  • serverUrl
  • proxy
  • headers değerleri
  • auth.token
  • variables değerleri

Örnek:

openapi-cli --spec openapi.json \
--server 'https://${API_HOST}/v1' \
--header 'Authorization: Bearer ${BEARER_TOKEN}'

.env davranışı: mevcut process.env girdilerinin üzerine yazılmaz; değerleri çevreleyen tek veya çift tırnaklar kaldırılır; boş satırlar ve # yorum satırları yok sayılır; eksik dosya sessizce atlanır.

Koddan yapılandırma oluşturma​

import { resolveConfig, DEFAULT_CONFIG } from "@powerduck/openapi-cli";

const config = resolveConfig({
spec: "./openapi.json",
server: "https://api.staging.example.com",
concurrency: 10,
method: "get",
});

Belirtim verilmediğinde resolveConfig, "No OpenAPI spec path provided..." hatasını; proxy geçerli bir URL olmadığında ise Invalid proxy URL: <url> hatasını fırlatır.