ASP.NET Core MVC Formatters para la entrada y salida de MessagePack.
MessagePack es un formato de serialización binario eficiente. Le permite intercambiar datos entre varios idiomas como JSON. Pero es más rápido y más pequeño. Los enteros pequeños están codificados en un solo byte, y las cadenas cortas típicas requieren solo un byte adicional además de las cuerdas mismas.
La negociación de contenido ocurre cuando el cliente especifica un encabezado Accept . El formato predeterminado utilizado por ASP.NET Core es JSON. Pero el cliente puede especificar el formato 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 > ( ) ;
}En este ejemplo, se utiliza byndyusoft.net.http.messagepack.
Las aplicaciones Core ASP.NET que necesitan admitir el formato de MessagePack pueden agregar Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack paquetes Nuget y configurar soporte. Hay formateros separados para la entrada y la salida. Los formateros de entrada se utilizan mediante la unión del modelo. Los formateros de salida se utilizan para formatear las respuestas.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack MessagePack Formatters implementados usando MessagePackSerializer se configuran llamando AddMessagePackFormatters :
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
} El código anterior serializa los resultados utilizando MessagePackSerializer .
Las características de los formators de MessagePack se pueden configurar utilizando Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptions .
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; Los clientes pueden solicitar un formato particular como parte de la URL, por ejemplo:
El mapeo de la ruta de solicitud debe especificarse en la ruta que está utilizando la API. Por ejemplo:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ La ruta anterior permite que el formato solicitado se especifique como una extensión de archivo opcional. El atributo [FormatFilter] verifica la existencia del valor de formato en Routedata y mapea el formato de respuesta al formateador apropiado cuando se crea la respuesta.
| Ruta | Formatero |
|---|---|
| /API/Productos/5 | El formateador de salida predeterminado |
| /api/products/5.json | El formateador JSON (si está configurado) |
| /api/products/5.msgpack | La formatilla de messagePack (si está configurado) |
Para contribuir, deberá configurar su entorno local, ver requisitos previos. Para la Guía de contribución y flujo de trabajo, consulte el ciclo de vida del desarrollo del paquete.
Se puede encontrar una descripción detallada de cómo contribuir en la guía contribuyente.
Asegúrese de haber instalado todos los siguientes requisitos previos en su máquina de desarrollo:
srctestsmaster del proyecto