サービスプロバイダー
このページは英語から自動翻訳されています。 原文を読む
Service Providers は、ポータブルな構成ファイルを使用して Sisk アプリケーションをさまざまな環境へ移植する方法です。この機能により、サーバーのポートやパラメーター、その他のオプションを、環境ごとにアプリケーションコードを変更することなく変更できます。このモジュールは Sisk の構成構文に依存しており、UsePortableConfiguration メソッドを通じて構成できます。
構成プロバイダーは IConfigurationProvider で実装され、構成リーダーを提供し、任意の実装を受け取ることができます。デフォルトでは Sisk は JSON 構成リーダーを提供しますが、INI ファイル用のパッケージもあります。独自の構成プロバイダーを作成し、次のように登録することもできます。
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigReader<MyConfigurationReader>();
})
.Build();前述のとおり、デフォルトのプロバイダーは JSON ファイルです。既定で検索されるファイル名は service-config.json で、実行プロセスのカレントディレクトリが検索対象となり、実行ファイルのディレクトリは対象外です。
ファイル名や Sisk が構成ファイルを探す場所を変更したい場合は、次のように指定できます。
using Sisk.Core.Http;
using Sisk.Core.Http.Hosting;
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithConfigFile("config.toml",
createIfDontExists: true,
lookupDirectories:
ConfigurationFileLookupDirectory.CurrentDirectory |
ConfigurationFileLookupDirectory.AppDirectory);
})
.Build();上記のコードは、実行プロセスのカレントディレクトリで config.toml を探します。見つからない場合は、実行ファイルが置かれているディレクトリを検索します。ファイルが存在しない場合、createIfDontExists パラメーターが尊重され、最後にテストされたパス(lookupDirectories に基づく)に内容のないファイルが作成され、コンソールにエラーが出力されてアプリケーションの初期化が中止されます。
ヒント
INI 構成リーダーと JSON 構成リーダーのソースコードを確認すると、IConfigurationProvider がどのように実装されているかが分かります。
JSON ファイルからの構成の読み取り #
デフォルトで、Sisk は JSON ファイルから構成を読み取る構成プロバイダーを提供します。このファイルは固定の構造に従い、以下のパラメーターで構成されます。
{
"Server": {
"DefaultEncoding": "UTF-8",
"ThrowExceptions": true,
"IncludeRequestIdHeader": true
},
"ListeningHost": {
"Label": "My sisk application",
"Ports": [
"http://localhost:80/",
"https://localhost:443/", // 設定ファイルはコメントもサポートします
],
"CrossOriginResourceSharingPolicy": {
"AllowOrigin": "*",
"AllowOrigins": [ "*" ], // 0.14 で新規追加
"AllowMethods": [ "*" ],
"AllowHeaders": [ "*" ],
"MaxAge": 3600
},
"Parameters": {
"MySqlConnection": "server=localhost;user=root;"
}
}
}構成ファイルから作成されたパラメーターは、サーバーコンストラクター内で次のように取得できます。
using var app = HttpServer.CreateBuilder()
.UsePortableConfiguration(config =>
{
config.WithParameters(paramCollection =>
{
string databaseConnection = paramCollection.GetValueOrThrow("MySqlConnection");
});
})
.Build();各構成リーダーはサーバー初期化パラメーターを読み取る手段を提供します。一部のプロパティは、機密性の高い API データや API キーなど、構成ファイルではなくプロセス環境に設定すべきであることが示されています。
構成ファイルの構造 #
JSON 構成ファイルは以下のプロパティで構成されます。
| プロパティ | 必須 | 説明 |
|---|---|---|
| Server | 必須 | サーバー本体とその設定を表します。 |
| Server.AccessLogsStream | 任意 | デフォルトは console。アクセスログの出力先ストリームを指定します。ファイル名、null、または console が使用可能です。 |
| Server.ErrorsLogsStream | 任意 | デフォルトは null。エラーログの出力先ストリームを指定します。ファイル名、null、または console が使用可能です。 |
| Server.MaximumContentLength | 任意 | デフォルトは 0(無制限)。バイト単位で最大コンテンツ長を指定します。Server オブジェクトが存在しこのプロパティが省略された場合、値は 0(無制限)となり、HttpServerConfiguration.MaximumContentLength の 100 MB デフォルトを上書きします。 |
| Server.IncludeRequestIdHeader | 任意 | デフォルトは false。HTTP サーバーが X-Request-Id ヘッダーを送信するかどうかを指定します。 |
| Server.ThrowExceptions | 任意 | デフォルトは true。未処理例外をスローするかどうかを指定します。本番環境では false、デバッグ時は true に設定してください。 |
| ListeningHost | 必須 | サーバーのリスニングホストを表します。 |
| ListeningHost.Label | 任意 | アプリケーションのラベルを表します。 |
| ListeningHost.Ports | 必須 | 文字列の配列で、ListeningPort の構文に一致します。 |
| ListeningHost.CrossOriginResourceSharingPolicy | 任意 | アプリケーションの CORS ヘッダーを設定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowCredentials | 任意 | デフォルトは false。Allow-Credentials ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.ExposeHeaders | 任意 | デフォルトは null。文字列配列を期待し、Expose-Headers ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigin | 任意 | デフォルトは null。文字列を期待し、Allow-Origin ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowOrigins | 任意 | デフォルトは null。文字列配列を期待し、複数の Allow-Origin ヘッダーを指定します。詳細は AllowOrigins を参照してください。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowMethods | 任意 | デフォルトは null。文字列配列を期待し、Allow-Methods ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.AllowHeaders | 任意 | デフォルトは null。文字列配列を期待し、Allow-Headers ヘッダーを指定します。 |
| ListeningHost.CrossOriginResourceSharingPolicy.MaxAge | 任意 | デフォルトは null。整数を期待し、秒単位で Max-Age ヘッダーを指定します。 |
| ListeningHost.Parameters | 任意 | アプリケーションのセットアップメソッドに提供されるプロパティを指定します。 |