Diese Bibliothek enthält eine Sammlung von Helfern, Modellen und Erweiterungsmethoden, die dazu beitragen, den Zeit- und Arbeitsaufwand für die Verbesserung einer ASP.NET-Core MVC WebApi/RESTful-API zu reduzieren.
Dadurch werden alle Elemente unter Verwendung der Standardeinstellungen (wie unten aufgeführt) hinzugefügt. Einfach, schnell und großartig.
Fügen Sie beides hinzu.
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();
}
oder eine individuellere Version:
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);
}
Andernfalls können Sie die gewünschten Artikel auswählen.
Ideal für APIs, dadurch wird die Standardroute „root/home“ erstellt => HTTP GET /
mit:
Optionales Banner – etwas Text (wie ASCII ART)
Erstellen Sie Informationen zu einer Assembly.
public void ConfigureServices(IServiceCollection services)
{
var someASCIIArt = "... blah .."; // Optional.
services.AddControllers()
.AddAHomeController(services, someASCIIArt);
}
ZB Ausgabe
___ ___ ___ ___ ___ ___ ___ ___
/__ / / /__ / / / / ___
/:/ / /:: /:: /::| | /:: : /:: /:: /
/:/__/ /:/: /:/: /:|:| | /:/: : /:/: /:/: :
/:: ___ /:/ : /::~: /:/|:| |__ /::~: /:: /::~: /::~: /::__
/:/: /__ /:/__/ :__ /:/: :__ /:/ |:| /__ /:/: :__ /:/:__ /:/: :__ /:/: :__ __/://__/
/__:/:/ / : /:/ / /_|::/:/ / /__|:|/:/ / :~: /__/ /:/ /__/ /__:/:/ / /__:/:/ / //:/ /
::/ / : /:/ / |:|::/ / |:/:/ / : :__ /:/ / ::/ / ::/ / ::/__/
/:/ / :/:/ / |:|/__/ |::/ / : /__/ /__/ /:/ / /__/ :__
/:/ / ::/ / |:| | /:/ / :__ /:/ / /__/
/__/ /__/ |__| /__/ /__/ /__/
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
Alle Antworten sind JSON und mit den allgemeinen JSON-Einstellungen formatiert:
CamelCase-Eigenschaftsnamen.
Eingerückte Formatierung.
Ignorieren Sie Nulleigenschaften, die Werte haben.
Aufzählungen werden als string
gerendert ... nicht als ihr zugrunde liegender Zahlenwert.
Kann eine benutzerdefinierte DateTime-Formatvorlage angeben.
// 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);
}
Beispielmodell/Domänenobjekt:
new FakeVehicle
{
Id = 1,
Name = "Name1",
RegistrationNumber = "RegistrationNumber1",
Colour = ColourType.Grey,
VIN = null
});
Ergebnis-JSON-Text:
{
"id": 1,
"name": "Name1",
"registrationNumber": "RegistrationNumber1",
"colour": "Grey"
}
Hinweis zur Standardformatierung von .NET Core DateTime.
Standardmäßig wird das Format ISO 8601-1:2019 verwendet. Das heißt, wenn einige Mikrosekunden vorhanden sind, werden sie gerendert. Wenn es keine gibt -> werden keine Mikrosekunden gerendert. Dies kann es einigen Verbrauchern dieser Daten erschweren (z. B. iOS-Swift-Apps, die eine .NET Core-API nutzen), sodass Sie eine bestimmte Formatvorlage fest codieren können, um eine konsistente Ausgabe zu erhalten.
OpenAPI (unter Verwendung der Swashbuckle-Bibliothek) wurde verkabelt und ermöglicht es Ihnen, den title
und version
dieser API sowie ein benutzerdefiniertes route prefix
zu definieren (was für eine Gateway-API mit mehreren OpenAPI-Endpunkten gut ist, da jeder Microservice über ein eigenes OpenAPI-Dokument verfügt). ).
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());
}
Diskussionen und Pull-Requests sind erwünscht :) Bitte stellen Sie alle allgemeinen Fragen in diesem Repo oder wählen Sie ein spezielles Repo für spezifische, gezielte Probleme aus. Wir haben auch ein Begleitdokument, in dem detailliert beschrieben wird, wie dies zu bewerkstelligen ist.
Ja, wir haben auch einen Verhaltenskodex, der für alle Repositories in der (GitHub) Homely-Organisation gilt.
Ja, lesen Sie auf der Beitragsseite nach, wie Sie am besten Feedback geben können – entweder gut oder verbesserungswürdig :)