ASP.NET Core MVC Forders pour l'entrée et la sortie MessagePack.
MessagePack est un format de sérialisation binaire efficace. Il vous permet d'échanger des données entre plusieurs langues comme JSON. Mais c'est plus rapide et plus petit. Les petits entiers sont codés en un seul octet, et les cordes courtes typiques ne nécessitent qu'un octet supplémentaire en plus des cordes elles-mêmes.
La négociation de contenu se produit lorsque le client spécifie un en-tête Accept . Le format par défaut utilisé par ASP.NET Core est JSON. Mais le client peut spécifier le format 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 > ( ) ;
}Dans cet exemple, bynddyusoft.net.http.MessagePack est utilisé.
Les applications ASP.NET Core qui doivent prendre en charge le format MessagePack peuvent ajouter les packages NuGet Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack Nuget et configurer la prise en charge. Il existe des formateurs distincts pour l'entrée et la sortie. Les formateurs d'entrée sont utilisés par la liaison du modèle. Les formateurs de sortie sont utilisés pour formater les réponses.
dotnet add package Byndyusoft.AspNetCore.Mvc.Formatters.MessagePack Les formateurs MessagePack implémentés à l'aide MessagePackSerializer sont configurés en appelant AddMessagePackFormatters :
public void ConfigureServices ( IServiceCollection services )
{
services . AddMvcCore ( )
. AddMessagePackFormatters ( ) ;
} Le code précédent sérialise les résultats à l'aide de MessagePackSerializer .
Les fonctionnalités des formateurs MessagePack peuvent être configurées à l'aide de Microsoft.AspNetCore.Mvc.MvcMessagePackOptions.SerializerOptions .
services . AddMvcCore ( )
. AddMessagePackFormatters (
options =>
{
options . SerializerOptions
. WithResolver ( TypelessContractlessStandardResolver . Instance )
. WithCompression ( MessagePackCompression . Lz4Block )
. WithSecurity ( MessagePackSecurity . TrustedData ) ;
} ) ; Les clients peuvent demander un format particulier dans le cadre de l'URL, par exemple:
Le mappage à partir du chemin de demande doit être spécifié dans l'itinéraire que l'API utilise. Par exemple:
[ Route ( "api/[controller]" ) ]
[ ApiController ]
[ FormatFilter ]
public class ProductsController : ControllerBase
{
[ HttpGet ( "{id}.{format?}" ) ]
public Product Get ( int id )
{ L'itinéraire précédent permet de spécifier le format demandé comme une extension de fichier facultative. L'attribut [FormatFilter] vérifie l'existence de la valeur de format dans la RouteData et mappe le format de réponse au formateur approprié lorsque la réponse est créée.
| Itinéraire | Format |
|---|---|
| / API / Produits / 5 | Le formateur de sortie par défaut |
| /api/products/5.json | Le formateur JSON (si configuré) |
| /api/products/5.msgpack | Le format MessagePack (si configuré) |
Pour contribuer, vous devrez configurer votre environnement local, voir les conditions préalables. Pour le guide de contribution et de flux de travail, voir le cycle de vie du développement des packages.
Un aperçu détaillé de la façon de contribuer peut être trouvé dans le guide de contribution.
Assurez-vous que vous avez installé toutes les conditions suivantes sur votre machine de développement:
srctestsmaster du projet