Protobuf 입력 및 출력을위한 ASP.NET Core MVC Formatter.
프로토콜 버퍼는 구조화 된 데이터를 직렬화하기위한 Google의 중립적, 플랫폼 중립적, 확장 가능한 메커니즘입니다. XML을 생각하지만 더 작고 빠르며 간단합니다.
컨텐츠 협상은 클라이언트가 Accept 헤더를 지정할 때 발생합니다. ASP.NET Core에서 사용하는 기본 형식은 JSON입니다. 그러나 클라이언트는 ProtoBuf 형식을 지정할 수 있습니다.
using ( var httpClient = new HttpClient ( ) )
{
client . DefaultRequestHeaders . Accept . Add ( new MediaTypeWithQualityHeaderValue ( "application/protobuf" ) ) ;
var response = await client . GetAsync ( "/api/products/5" ) ;
var product = response . Content . ReadFromProtoBufAsync < Product > ( ) ;
}이 예에서는 byndyusoft.net.http.protobuf 패키지가 사용됩니다.
Protobuf 형식을 지원 해야하는 ASP.NET Core 앱은 Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf Nuget 패키지를 추가하고 지원을 구성 할 수 있습니다. 입력 및 출력을위한 별도의 형성자가 있습니다. 입력 포피터는 모델 바인딩에 의해 사용됩니다. 출력 포피터는 응답을 포맷하는 데 사용됩니다.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.ProtoBuf Protobuf Formatter는 ProtoBufSerializer 사용하여 구현 된 AddProtoBufFormatters 호출하여 구성됩니다.
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddProtoBufFormatters ( ) ;
} 앞의 코드는 ProtoBufSerializer 사용하여 결과를 연속화합니다.
클라이언트는 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.protobuf | protobuf formatter (구성된 경우) |
기여하려면 지역 환경을 설정해야합니다. 전제 조건을 참조하십시오. 기여 및 워크 플로 가이드는 패키지 개발 수명주기를 참조하십시오.
기여 방법에 대한 자세한 개요는 기고 가이드에서 찾을 수 있습니다.
개발 기계에 다음과 같은 전제 조건을 모두 설치했는지 확인하십시오.
src 에서 패키지 로직을 구현하십시오tests 에서 단위 테스트 (이전 및 동시에 코딩과 동시에 선호) 추가 또는 AddAptmaster 브랜치를 타겟팅하십시오