Sisk

INI 設定プロバイダー

このページは英語から自動翻訳されています。 原文を読む

Sisk には JSON 以外の起動設定を取得する方法があります。実際、IConfigurationReader を実装したパイプラインであれば、PortableConfigurationBuilder.WithConfigurationPipeline と組み合わせて使用でき、任意のファイル形式からサーバー設定を読み取ることができます。

Sisk.IniConfiguration パッケージは、一般的な構文エラーで例外をスローせず、シンプルな設定構文を持つストリームベースの INI ファイルリーダーを提供します。このパッケージは Sisk フレームワークの外部でも使用でき、効率的な INI ドキュメントリーダーが必要なプロジェクトに柔軟性を提供します。

インストール #

パッケージをインストールするには、次のコマンドから始めます。

Bash
$ dotnet add package Sisk.IniConfiguration

コアパッケージもインストールできます。このパッケージは INI の IConfigurationReader や Sisk の依存関係を含まず、INI シリアライザーだけが含まれます:

Bash
$ dotnet add package Sisk.IniConfiguration.Core

メインパッケージを使用すると、以下の例のようにコード内で利用できます。

C#
class Program
{
    static HttpServerHostContext Host = null!;

    static void Main(string[] args)
    {
        Host = HttpServer.CreateBuilder()
            .UsePortableConfiguration(config =>
            {
                config.WithConfigFile("app.ini", createIfDontExists: true);
                
                // IniConfigurationReader 設定リーダーを使用します
                config.WithConfigurationPipeline<IniConfigurationReader>();
            })
            .UseRouter(r =>
            {
                r.MapGet("/", SayHello);
            })
            .Build();
        
        Host.Start();
    }

    static HttpResponse SayHello(HttpRequest request)
    {
        string? name = Host.Parameters["name"] ?? "world";
        return new HttpResponse($"Hello, {name}!");
    }
}

上記のコードは、プロセスのカレントディレクトリ (CurrentDirectory) にある app.ini ファイルを探します。INI ファイルの例は以下の通りです:

INI
[Server]
# 複数のリッスンアドレスをサポートしています
Listen = http://localhost:5552/
Listen = http://localhost:5553/
ThrowExceptions = false
AccessLogsStream = console

[Cors]
AllowMethods = GET, POST
AllowHeaders = Content-Type, Authorization
AllowOrigin = *

[Parameters]
Name = "Kanye West"

INI の方言と構文 #

現在の実装の方針:

  • プロパティ名とセクション名は 大文字小文字を区別しません。
  • プロパティ名と値は トリム されます(値が引用符で囲まれている場合を除く)。
  • 値はシングルクオートまたはダブルクオートで囲むことができます。クオート内に改行を含めることも可能です。
  • コメントは # と ; で記述できます。また、行末コメントも許可されています。
  • プロパティは複数の値を持つことができます。

詳細については、Sisk で使用されている INI パーサーの「方針」ドキュメントが このドキュメント にあります。

以下の INI コードを例として使用します:

INI
One = 1
Value = this is an value
Another value = "this value
    has an line break on it"

; 以下のコードは色を示しています
[some section]
Color = Red
Color = Blue
Color = Yellow ; yellow は使用しないでください

次のように解析します:

C#
// 文字列から INI テキストを解析する
IniDocument doc = IniDocument.FromString(iniText);

// 1つの値を取得する
string? one = doc.Global.GetOne("one");
string? anotherValue = doc.Global.GetOne("another value");

// 複数の値を取得する
string[]? colors = doc.GetSection("some section")?.GetMany("color");

設定パラメータ #

セクションと名前複数値を許可説明
Server.Listenはいサーバーがリッスンするアドレス/ポート。
Server.Encodingいいえサーバーのデフォルトエンコーディング。
Server.MaximumContentLengthいいえサーバーの最大コンテンツ長サイズ(バイト単位)。省略した場合、サーバーのデフォルト(Sisk 1.7 以降は 100 MB)が使用されます。制限なしにするには 0 を使用してください。
Server.IncludeRequestIdHeaderいいえHTTP サーバーが X-Request-Id ヘッダーを送信すべきかを指定します。
Server.ThrowExceptionsいいえ未処理例外をスローすべきかを指定します。
Server.AccessLogsStreamいいえアクセスログの出力ストリームを指定します。
Server.ErrorsLogsStreamいいえエラーログの出力ストリームを指定します。
Cors.AllowMethodsいいえCORS の Allow-Methods ヘッダー値を指定します。
Cors.AllowHeadersいいえCORS の Allow-Headers ヘッダー値を指定します。
Cors.AllowOriginsいいえカンマ区切りで複数の Allow-Origin ヘッダーを指定します。詳細は AllowOrigins を参照してください。
Cors.AllowOriginいいえ単一の Allow-Origin ヘッダーを指定します。
Cors.ExposeHeadersいいえCORS の Expose-Headers ヘッダー値を指定します。
Cors.AllowCredentialsいいえCORS の Allow-Credentials ヘッダー値を指定します。
Cors.MaxAgeいいえCORS の Max-Age ヘッダー値を指定します。

ドキュメントと API リファレンスを検索するには入力してください。