C# / ASP.NET Core Web API: ¿cómo pasar un parámetro de tipo lista?
Estoy tratando de pasar un parámetro de tipo lista a una API web ASP.NET Core 5.
Aquí está mi punto final:
[ApiController]
[Route("[controller]")]
public class InvoiceController : ControllerBase
{
private readonly IConfiguration _configuration;
public InvoiceController(IConfiguration configuration)
{
_configuration = configuration;
}
[HttpPost]
public List<customerinvoice> Post(string[] CustomerNumbers, DateTime OrderDateFrom, DateTime OrderDateTo)
{
}
}
El envío de una solicitud POST en formato JSON falla con el siguiente error:
No se pudo convertir el valor JSON a System.String[]. Ruta: $ | Número de línea: 0 | Posición de bytes en línea: 1.
Y aquí está la solicitud:
{
"CustomerNumbers": ["test"],
"OrderDateFrom": "2021-01-01",
"OrderDateTo": "2021-11-02"
}
En lugar de usar un arreglo de strings, también intenté usar List<string>
. Obtuve el mismo error.
¿Alguna idea de por qué el framework no comprende cómo recibir una lista?
davy.ai
Para pasar un parámetro de lista a una API web ASP.NET Core 5, el parámetro debe estar marcado con el atributo
[FromBody]
en el método del controlador. En este caso, el parámetroCustomerNumbers
debe actualizarse a:Además, la carga JSON debe actualizarse a:
Observa el uso del atributo
[FromBody]
y también el cambio destring[]
aList<string>
en el parámetro del métodoPost
. La carga JSON debe tener la misma estructura que la firma del método actualizada, dondeCustomerNumbers
es un array de cadenas representado como["test"]
en este caso.