Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

577
Visualizações
No puedo decidir entre Task<IActionResult>, IActionResult y ActionResult<Thing>

Si bien entiendo el concepto de Task , ActionResult , etc. Todavía no estoy seguro de cuál sería más intuitivo para escribir en un controlador si no se especifica nada más.

Teniendo en cuenta ser tan explícito con un tipo devuelto, debería hacerlo así:

 [HttpGet] public ActionResult<Thing> Get() { return Ok(Context.Things); }

Sin embargo, al optar por un tipo genérico de paradigma de API, debería usar esto:

 [HttpGet] public IActionResult Get() { return Ok(Context.Things); }

Finalmente, respetando la naturaleza asíncrona de la filosofía API debo aplicar lo siguiente:

 [HttpGet] public Task<IActionResult> Get() { return Ok(Context.Things); }

No puedo decidir cuál es el más apropiado en un escenario general de campo nuevo. Los dos primeros funcionan aparentemente. Intuitivamente, preferiría ir con el tercero, pero como no funcionó (la conversión no es válida), me preocupé de que tal vez estaba ladrando en el árbol binario equivocado.

No estoy seguro de cómo buscarlo en Google y estoy obteniendo todo tipo de ejemplos. No estoy seguro de cómo juzgar cuáles son relevantes, prefiero preguntar.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Aquí hay una comparación rápida de las diferentes opciones de devolución:

Tipo específico

 public Thing Get() { return Context.Things.GetThing(1234); }

Esto está bien si la acción siempre devolverá un tipo posible. Sin embargo, la mayoría de las acciones pueden devolver excepciones (es decir, códigos de estado distintos de 200) que tienen diferentes tipos.

Tipo IActionResult

Esto resuelve el problema anterior ya que el tipo de devolución IActionResult cubre diferentes tipos de devolución.

 public IActionResult Get() { Thing thing = Context.Things.GetThing(1234); if (thing == null) return NotFound(); else return Ok(thing); }

Para una acción asíncrona, use Task<IActionResult> :

 public async Task<IActionResult> Get() { Thing thing = await Context.Things.GetThing(1234); if (thing == null) return NotFound(); else return Ok(thing); }

Tipo de resultado de acción

ASP.NET Core 2.1 introdujo el tipo de retorno ActionResult<T> que ofrece los siguientes beneficios sobre el tipo IActionResult :

1- El tipo de retorno esperado de la acción se deduce de la T en ActionResult<T> . Si decora su acción con el atributo [ProducesResponseType] , ya no necesita especificar explícitamente su propiedad Type . Por ejemplo, simplemente puede usar [ProducesResponseType(200)] en lugar de [ProducesResponseType(200, Type = typeof(Thing))] .

2- T se convierte en ObjectResult , lo que significa return new ObjectResult(T); se simplifica para return T; .

 public ActionResult<Thing> Get() { Thing thing = Context.Things.GetThing(1234); if (thing == null) return NotFound(); else return thing; }

Para una acción asíncrona, use Task<ActionResult<T>> :

 public async Task<ActionResult<Thing>> Get() { Thing thing = await Context.Things.GetThing(1234); if (thing == null) return NotFound(); else return thing; }

Para obtener más detalles, puede consultar la página de MSDN Tipos de retorno de acción del controlador en ASP.NET Core Web API .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda