
Atributos como [FromRoute]
, [FromForm]
, [FromQuery]
o [FromBody]
, entre otros, permiten ser muy precisos a la hora de indicar al framework cómo poblar los parámetros de los handlers de nuestros endpoints contruídos con Minimal APIs.
Por ejemplo, en la siguiente API sencilla se puede intuir que el parámetro id
del manejador será obtenido de la ruta, mientras que number
se obtendrá desde la query string:
app.MapPost("/friends/{id}/phones", ([FromRoute] int id, [FromQuery] string number) =>
{
// Añadir un número de teléfono al amigo
});
Y otro ejemplo, en el que usamos [FromBody]
para especificar que el parámetro de tipo Friend
queremos obtenerlo desde el cuerpo de la petición:
app.MapPut("/friends/{id}", ([FromRoute] int id, [FromBody] Friend friend) =>
{
// Actualizar amigo
});
Publicado por José M. Aguilar a las 8:05 a. m.
Etiquetas: aspnetcore, trucos

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- ¿Cuánto pesa realmente una aplicación Blazor WebAssembly recién creada?
José María Aguilar - Y todavía otras 101 citas célebres del mundo de la informática
José María Aguilar
.NET Core / .NET
- Trabajos en segundo plano en .Net
Fernando Escolar - Property Ordering in C# JSON Serialization
Code Maze - WireMock.NET - Troubleshooting
Cezary Piątek - Short Circuit Evaluation of IF Statements with Await in C#
Code Maze - Covariance and Contravariance in C#
Steven Giesel - Reduce Collection Lookups With ReSharper
Maarten Balliauw - Setting an Absolute Output Path for .NET SDK Projects
Rick Strahl

Versión tras versión, Entity Framework Core sigue introduciendo novedades que lo hacen cada vez más potente y atractivo para los desarrolladores. Sin ir más lejos, EF7, la última entrega disponible, incorporó bastantes mejoras en términos de rendimiento, soporte para columnas JSON, mapeo TPC, mapeo a procedimientos almacenados y muchas otras.
Pero una de las novedades que me resultó más interesante, quizás por ser muy esperada, fue la posibilidad de realizar borrados y actualizaciones de forma masiva sin tener que recurrir a lanzar directamente comandos SQL. O dicho de otra forma, con EF7 podremos ejecutar sentencias DELETE
y UPDATE
sobre la base de datos sin abandonar LINQ :)

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- Palabras malditas
José María Aguilar - Analiza tu código a fondo y desde distintas perspectivas con NDepend
José María Aguilar
.NET Core / .NET
- Announcing .NET 8 Preview 3
Jiachen Jiang - Check out new C# 12 preview features!
Kathleen Dollard - Convert HTML to PDF Report in .NET
Abdul Rahman Shabeek Mohamed - How to Do an Inner Join in LINQ?
Code Maze - Run dotnet core projects without opening visual studio
Karthik Chintala - Investigating a crash in Enumerable.LastOrDefault with a custom collection
Gérald Barré - 5 useful extensions for Task<T> in .NET
Steven Giesel - Normalize and compare URLs with C#
Thomas Ardal - Using Application Insights in .NET Desktop Applications
Rick Strahl - Working With Nested Tasks
Pawel Woltschkow - Producing and Consuming Kafka Messages in CloudEvents Format Using the C# SDK
Vasil Kosturski - Why my WireMock mocks aren't working?
Daniel Genezini - C# Tip: Access items from the end of the array using the ^ operator
Davide Bellone - Static Fields Are Evil, If Not Coded Correctly
David McCarter - Upcasting and Downcasting in C#
Code Maze - .NET 8 Performance Edition
Steven Giesel - Converting Strings to .NET Objects – IParsable and ISpanParsable
Christian Nagel - Performance: The Fastest Way to Use Regular Expressions in Microsoft .NET 7
David McCarter - Different Ways to Split a String in C#
Code Maze - C#12 class and struct Primary Constructors
Patrick Smacchia

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- El hombre que inventó el Control-Alt-Suprimir
José María Aguilar - C# source generators: un ejemplo sencillo, paso a paso
José María Aguilar
.NET Core / .NET
- Looking at C# 12 Proposals and Beyond
Michael Shpilt - LINQ on steroids with SIMD
Steven Giesel - Does OpenTelemetry in .NET Cause Performance Degradation?
Martin J. T. - Refactoring Object-Orientation Abusers in C#
Code Maze - WireMock.NET - Introduction
Cezary Piątek - An abstract example of refactoring from interaction-based to property-based testing
Mark Seemann - How to Remove All Whitespace Characters From a String in C#?
Code Maze - Source Generators and Regular Expressions
Steven Giesel - Listing all available ETW events in a .NET application
Gérald Barré - Working with Tuple in C#
A. Yohan Malshika - C# 11.0 new features: Span<char> pattern matching
Ian Griffiths - Pythonnet – A Simple Union of .NET Core and Python You’ll Love
Nick Cosentino

Ahí van los enlaces recopilados durante la semana pasada. Espero que os resulten interesantes. :-)
Por si te lo perdiste...
- C# Source generators: metaprogramación en tiempo de compilación
José María Aguilar - Desmitificando las expresiones lambda (I)
José María Aguilar
.NET Core / .NET
- How to create a NuGet metapackage
Daniel Wertheim - C# Source Generators: How to get build information?
Steven Giesel - Handling CancelKeyPress using a CancellationToken
Gérald Barré - Deep Copy of an Object in C#
Code Maze - Understanding the .NET ecosystem: The introduction of .NET Standard
Andrew Lock - Primary Constructors with C#
Christian Nagel - Improving multi-platform container support
Richard Lander - How to Delete Elements from an Array in C#
Code Maze - Using the contents of a file to define an MSBuild property
Raymond Chen - C# - Clean up your exception handling logic with Exception Filters
Bart Wullems - Using System.Text.Json to do polymorphic Json conversion in .NET 6
Allan Thraen - Observability in Wolverine
Jeremy D. Miller - Vendor-Agnostic Telemetry Using OpenTelemetry Collector in .NET
Phil Broderick - Change the ServiceLifetime after the service has been added to the .NET ServiceCollection
Niels Swimberghe