ASP.NET CORE MVC FORMURTES PARA INPUTAGEM E SAÍDA E MENSAGEM.
MessagePack é um formato de serialização binária eficiente. Permite trocar dados entre vários idiomas como o JSON. Mas é mais rápido e menor. Pequenos números inteiros são codificados em um byte único, e as cordas curtas típicas requerem apenas um byte extra, além das próprias cordas.
A negociação de conteúdo ocorre quando o cliente especifica um cabeçalho Accept . O formato padrão usado pelo CORE ASP.NET é JSON. Mas o cliente pode especificar o 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 > ( ) ;
}Neste exemplo, é usado o pacote ByNDYUSOFT.NET.HTTP.MESSAGEPACK.
Os aplicativos Core ASP.NET que precisam suportar o formato MessagePack podem adicionar os pacotes Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack nuget e configurar suporte. Existem formatados separados para entrada e saída. Os formatados de entrada são usados pela ligação do modelo. Os formatados de saída são usados para formatar respostas.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack Os formatados MessagePack implementados usando MessagePackSerializer são configurados chamando AddMessagePackFormatters :
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
} O código anterior serializa os resultados usando MessagePackSerializer .
Os recursos para os formatados MessagePack podem ser configurados usando Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptions .
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; Os clientes podem solicitar um formato específico como parte do URL, por exemplo:
O mapeamento do caminho da solicitação deve ser especificado na rota que a API está usando. Por exemplo:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ A rota anterior permite que o formato solicitado seja especificado como uma extensão de arquivo opcional. O atributo [FormatFilter] verifica a existência do valor do formato no Routedata e mapeia o formato de resposta para o formatador apropriado quando a resposta é criada.
| Rota | Formatador |
|---|---|
| /API/Produtos/5 | O formatador de saída padrão |
| /api/products/5.json | O formatador JSON (se configurado) |
| /api/products/5.msgpack | O formatador do MessagePack (se configurado) |
Para contribuir, você precisará configurar seu ambiente local, consulte os pré -requisitos. Para o guia de contribuição e fluxo de trabalho, consulte o ciclo de vida do desenvolvimento de pacotes.
Uma visão geral detalhada sobre como contribuir pode ser encontrada no guia contribuinte.
Certifique -se de instalar todos os seguintes pré -requisitos em sua máquina de desenvolvimento:
srctestsmaster do projeto