このライブラリには、ASP.NET-Core MVC WebApi/RESTful API を改善するための時間と儀式を短縮するのに役立つヘルパー、モデル、拡張メソッドのコレクションが含まれています。
これにより、デフォルト設定 (以下に示す) を使用してすべての項目が追加されます。シンプル、迅速、素晴らしい。
これらの両方を追加します。
public void ConfigureServices(IServiceCollection services)
{
// - Home controller but no banner.
// - Default json options: camel casing, no indention, nulls ignored and enums as strings.
// - OpenApi adeed.
services.AddControllers()
.AddDefaultWebApiSettings(); // Can also be totally customized.
}
public void Configure(IApplicationBuilder app)
{
// - Problem details
// - OpenAPI
// - Authorisation
// - Endpoints (with MapControllers)
app.UseDefaultWebApiSettings();
}
または、よりカスタマイズされたバージョン:
public void ConfigureServices(IServiceCollection services)
{
// - Home controller but no banner.
// - Default json options: camel casing, no indention, nulls ignored and enums as strings.
// - OpenApi adeed.
var banner = " -- ascii art --";
var isStackTraceDisplayed = _webHostEnvironment.IsDevelopment();
var isJsonIndented = _webHostEnvironment.IsDevelopment();
var jsonDateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ" // No milliseconds.
var openAPITitle = "My API";
var openAPIVersion = "v1";
var openAPICustomOperationIdSelector = new Func<ApiDescription, string>((apiDescrption, string) => { .. // refer to sample code in website } );
services.AddControllers()
.AddDefaultWebApiSettings(banner,
isStackTraceDisplayed,
isJsonIndented,
jsonDateTimeFormat,
openAPITitle,
openAPIVersion,
openAPICustomOperationIdSelector)
}
public void Configure(IApplicationBuilder app)
{
// - Problem details
// - OpenAPI (Customised)
// - Authorisation
// - Endpoints (with MapControllers)
var useAuthorizatoin = true;
var openAPITitle = "My API";
var openAPIVersion = "v1";
var openAPIRoutePrefix = "swagger";
app.UseDefaultWebApiSettings(useAuthorization,
openAPITitle,
openAPIVersion,
openAPIRoutePrefix);
}
それ以外の場合は、必要なアイテムを選んで選択することができます。
API に最適です。これにより、デフォルトの「root/home」ルート => HTTP GET /
が作成されます:
オプションのバナー - テキスト (ASCII ART など)
アセンブリに関するビルド情報。
public void ConfigureServices(IServiceCollection services)
{
var someASCIIArt = "... blah .."; // Optional.
services.AddControllers()
.AddAHomeController(services, someASCIIArt);
}
例:出力
___ ___ ___ ___ ___ ___ ___ ___
/__ / / /__ / / / / ___
/:/ / /:: /:: /::| | /:: : /:: /:: /
/:/__/ /:/: /:/: /:|:| | /:/: : /:/: /:/: :
/:: ___ /:/ : /::~: /:/|:| |__ /::~: /:: /::~: /::~: /::__
/:/: /__ /:/__/ :__ /:/: :__ /:/ |:| /__ /:/: :__ /:/:__ /:/: :__ /:/: :__ __/://__/
/__:/:/ / : /:/ / /_|::/:/ / /__|:|/:/ / :~: /__/ /:/ /__/ /__:/:/ / /__:/:/ / //:/ /
::/ / : /:/ / |:|::/ / |:/:/ / : :__ /:/ / ::/ / ::/ / ::/__/
/:/ / :/:/ / |:|/__/ |::/ / : /__/ /__/ /:/ / /__/ :__
/:/ / ::/ / |:| | /:/ / :__ /:/ / /__/
/__/ /__/ |__| /__/ /__/ /__/
S E R V I C E -> A C C O U N T S
Name: ApiGateway.Web
Version: 3.1.0.0
Build Date : Sunday, 7 June 2020 2:41:53 PM
Application Started: Monday, 8 June 2020 12:02:37 PM
Server name: PUREKROME-PC
すべての応答は JSON であり、一般的な JSON 設定を使用してフォーマットされます。
CamelCase のプロパティ名。
インデントされた書式設定。
値を持つ null プロパティを無視します。
列挙型は、そのバッキングの数値ではなく、 string
列としてレンダリングされます。
カスタムの DateTime 形式テンプレートを指定できます。
// Simplest : i
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddDefaultJsonOptions();
}
or
// All options...
public void ConfigureServices(IServiceCollection services)
{
var isIndented = true;
string dateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ" // No milliseconds.
services.AddControllers()
.AddDefaultJsonOptions(isIndented, dateTimeFormat);
}
サンプル モデル/ドメイン オブジェクト:
new FakeVehicle
{
Id = 1,
Name = "Name1",
RegistrationNumber = "RegistrationNumber1",
Colour = ColourType.Grey,
VIN = null
});
結果の JSON テキスト:
{
"id": 1,
"name": "Name1",
"registrationNumber": "RegistrationNumber1",
"colour": "Grey"
}
デフォルトの .NET Core DateTime 形式に関する注意事項。
デフォルトでは、ISO 8601-1:2019 形式が使用されます。これは、マイクロ秒があればレンダリングされることを意味します。何もない場合 -> マイクロ秒はレンダリングされません。これにより、このデータの一部の利用者 (.NET Core API を使用する iOS Swift アプリなど) にとっては困難になる可能性があるため、特定の形式のテンプレートをハードコードして一貫した出力を取得できます。
OpenAPI (Swashbuckle ライブラリを使用) が接続されており、この API のtitle
とversion
、およびカスタムroute prefix
を定義できるようになります (各マイクロサービスには独自の OpenAPI ドキュメントがあるため、複数の OpenAPI エンドポイントを持つゲートウェイ API に適しています) )。
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers()
.AddCustomOpenApi("Test API", "v2");
}
public void Configure(IApplicationBuilder app)
{
app.UseCustomOpenApi("accounts/swagger", "Test API", "v2")
.UseRouting()
.UseEndpoints(endpoints => endpoints.MapControllers());
}
ディスカッションとプル リクエストをお勧めします :) このリポジトリですべての一般的な質問をするか、特定の対象を絞った問題については専門のリポジトリを選択してください。これを行う方法について詳しく説明した寄稿ドキュメントもあります。
はい、私たちには、(GitHub) Homely 組織内のすべてのリポジトリに適用される行動規範もあります。
はい、フィードバックを提供する最善の方法 (良いフィードバック、または改善の必要なフィードバック) については、寄稿ページを参照してください :)