이 라이브러리에는 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에 적합하며 다음을 사용하여 기본 "루트/홈" 경로 => 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 조직의 모든 저장소에 적용되는 행동 강령도 있습니다.
네, 피드백을 제공하는 최선의 방법에 대한 기여 페이지를 참조하세요. 좋은 피드백이든 개선이 필요한 피드백이든 말이죠 :)