Pustaka ini berisi kumpulan pembantu, model, dan metode ekstensi yang membantu mengurangi waktu dan upacara untuk meningkatkan ASP.NET-Core MVC WebApi/RESTful API.
Ini menambahkan semua item, menggunakan pengaturan Default (seperti yang tercantum di bawah). Sederhana, cepat dan mengagumkan.
Tambahkan keduanya.
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();
}
atau versi yang lebih disesuaikan:
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);
}
Jika tidak, Anda dapat memilih item mana yang Anda inginkan.
Bagus untuk API, ini akan membuat rute "root/home" default => HTTP GET /
dengan:
Spanduk opsional - beberapa teks (seperti ASCII ART)
Bangun informasi tentang majelis.
public void ConfigureServices(IServiceCollection services)
{
var someASCIIArt = "... blah .."; // Optional.
services.AddControllers()
.AddAHomeController(services, someASCIIArt);
}
Misalnya keluaran
___ ___ ___ ___ ___ ___ ___ ___
/__ / / /__ / / / / ___
/:/ / /:: /:: /::| | /:: : /:: /:: /
/:/__/ /:/: /:/: /:|:| | /:/: : /:/: /:/: :
/:: ___ /:/ : /::~: /:/|:| |__ /::~: /:: /::~: /::~: /::__
/:/: /__ /:/__/ :__ /:/: :__ /:/ |:| /__ /:/: :__ /:/:__ /:/: :__ /:/: :__ __/://__/
/__:/:/ / : /:/ / /_|::/:/ / /__|:|/:/ / :~: /__/ /:/ /__/ /__:/:/ / /__:/:/ / //:/ /
::/ / : /:/ / |:|::/ / |:/:/ / : :__ /:/ / ::/ / ::/ / ::/__/
/:/ / :/:/ / |:|/__/ |::/ / : /__/ /__/ /:/ / /__/ :__
/:/ / ::/ / |:| | /:/ / :__ /:/ / /__/
/__/ /__/ |__| /__/ /__/ /__/
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
Semua tanggapan adalah JSON dan diformat menggunakan pengaturan JSON umum:
Nama properti CamelCase.
Pemformatan menjorok.
Abaikan properti nol yang memiliki nilai.
Enum dirender sebagai string
's ... bukan nilai nomor pendukungnya.
Dapat menentukan templat format DateTime khusus.
// 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);
}
Contoh Model/Objek Domain:
new FakeVehicle
{
Id = 1,
Name = "Name1",
RegistrationNumber = "RegistrationNumber1",
Colour = ColourType.Grey,
VIN = null
});
Teks JSON hasil:
{
"id": 1,
"name": "Name1",
"registrationNumber": "RegistrationNumber1",
"colour": "Grey"
}
Catatan tentang format .NET Core DateTime default.
Secara default, ini menggunakan format ISO 8601-1:2019. Artinya, jika ada beberapa mikrodetik, maka mikrodetik tersebut akan dirender. Jika tidak ada -> tidak ada mikrodetik yang ditampilkan. Hal ini mungkin menyulitkan sebagian konsumen data ini (misalnya aplikasi iOS Swift yang menggunakan .NET Core API) sehingga Anda dapat melakukan hardcode pada templat format tertentu untuk mendapatkan keluaran yang konsisten.
OpenAPI (menggunakan perpustakaan Swashbuckle) telah terhubung dan memungkinkan Anda menentukan title
dan version
API ini dan juga route prefix
khusus (yang cocok untuk API gateway dengan beberapa titik akhir OpenAPI karena setiap layanan mikro memiliki dokumen OpenAPI sendiri ).
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());
}
Diskusi dan permintaan penarikan dianjurkan :) Silakan ajukan semua pertanyaan umum di repo ini atau pilih repo khusus untuk masalah spesifik dan tertarget. Kami juga memiliki dokumen kontribusi yang merinci cara melakukan hal ini.
Ya, kami juga memiliki kode etik yang berlaku untuk semua repositori di organisasi (GitHub) Homely.
Yap, lihat halaman kontribusi tentang cara terbaik memberikan umpan balik - baik yang baik atau perlu perbaikan :)