es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo implementar una acción del controlador que pueda consumir solicitudes con los tipos de contenido text/plain y application/type?

Aquí está mi implementación actual:

    [HttpPost]
    [Route("test")]
    [Consumes("application/json", "text/plain")]
    public async Task<iactionresult> TestWebhook([FromBody] JsonElement payload)
    {
        return Ok(await ProcessInput(payload));
    }

Cuando llamo a este punto final con Content-Type: application/json, funciona como se esperaba. Pero cuando lo llamo con Content-Type: text/plain, obtengo el siguiente error:

{
    "type": "https://tools.ietf.org/html/rfc7231#section-6.5.13",
    "title": "Unsupported Media Type",
    "status": 415,
    "traceId": "00-bb0276f3ec28fb468dc36b3856fba038-58a520bb56d41841-00"
}

¿Cómo puedo configurar mi acción para consumir ambos tipos de contenido correctamente?

Gracias,

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para configurar la acción para consumir tanto los tipos de contenido application/json como text/plain, puedes agregar un formateador de medios personalizado para text/plain en el método ConfigureServices de tu archivo Startup.cs:

    services.AddControllers(options =>
    {
        options.InputFormatters.Insert(0, GetPlainTextFormatter());
    });
    
    private static InputFormatter GetPlainTextFormatter()
    {
        var plainTextFormatter = new TextInputFormatter();
        plainTextFormatter.SupportedMediaTypes.Add("text/plain");
        return plainTextFormatter;
    }
    

    Este código agrega un nuevo formateador de entrada de texto con un tipo de medio compatible de text/plain e lo inserta al principio de la lista de formateadores de entrada. Esto asegura que el formateador de texto sin formato se utilizará para las solicitudes con Content-Type: text/plain.

    Después de agregar este código, tu acción TestWebhook debería poder consumir correctamente los tipos de contenido application/json y text/plain.

Comments are closed.