MessagePack 입력 및 출력을위한 ASP.NET Core MVC Formatter.
MessagePack은 효율적인 이진 직렬화 형식입니다. JSON과 같은 여러 언어로 데이터를 교환 할 수 있습니다. 그러나 더 빠르고 작습니다. 작은 정수는 단일 바이트로 인코딩되며 일반적인 짧은 줄은 문자열 자체 외에 하나의 여분의 바이트 만 필요합니다.
컨텐츠 협상은 클라이언트가 Accept 헤더를 지정할 때 발생합니다. ASP.NET Core에서 사용하는 기본 형식은 JSON입니다. 그러나 클라이언트는 MessagePack 형식을 지정할 수 있습니다.
using ( var httpClient = new HttpClient ( ) )
{
client . DefaultRequestHeaders . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "application/msgpack" ) ) ;
var response = await client . GetAsync ( "/api/products/5" ) ;
var product = response . Content . ReadFromMessagePackAsync < Product > ( ) ;
}이 예에서는 byndyusoft.net.http.messagepack 패키지가 사용됩니다.
MessagePack 형식을 지원 해야하는 ASP.NET Core 앱은 Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack nuget 패키지를 추가하고 지원을 구성 할 수 있습니다. 입력 및 출력을위한 별도의 형성자가 있습니다. 입력 포피터는 모델 바인딩에 의해 사용됩니다. 출력 포피터는 응답을 포맷하는 데 사용됩니다.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack MessagePackSerializer 사용하여 구현 된 MessagePack Formatters는 AddMessagePackFormatters 호출하여 구성됩니다.
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
} 앞의 코드는 MessagePackSerializer 사용하여 결과를 연속화합니다.
MosePack Formatters의 기능은 Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptions 를 사용하여 구성 할 수 있습니다.
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; 클라이언트는 URL의 일부로 특정 형식을 요청할 수 있습니다.
API가 사용하는 경로에 요청 경로에서 매핑을 지정해야합니다. 예를 들어:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ 앞의 경로를 사용하면 요청 된 형식을 선택적 파일 확장자로 지정할 수 있습니다. [FormatFilter] 속성은 Routedata에 형식 값의 존재를 확인하고 응답이 생성 될 때 응답 형식을 적절한 형식에 맵핑합니다.
| 노선 | 형성자 |
|---|---|
| /API/Products/5 | 기본 출력 포맷터 |
| /api/products/5.json | JSON Formatter (구성된 경우) |
| /api/products/5.msgpack | MessagePack Formatter (구성된 경우) |
기여하려면 지역 환경을 설정해야합니다. 전제 조건을 참조하십시오. 기여 및 워크 플로 가이드는 패키지 개발 수명주기를 참조하십시오.
기여 방법에 대한 자세한 개요는 기고 가이드에서 찾을 수 있습니다.
개발 기계에 다음과 같은 전제 조건을 모두 설치했는지 확인하십시오.
src 에서 패키지 로직을 구현하십시오tests 에서 단위 테스트 (이전 및 동시에 코딩과 동시에 선호) 추가 또는 AddAptmaster 브랜치를 타겟팅하십시오