- Trending Categories
- Data Structure
- Networking
- RDBMS
- Operating System
- Java
- MS Excel
- iOS
- HTML
- CSS
- Android
- Python
- C Programming
- C++
- C#
- MongoDB
- MySQL
- Javascript
- PHP
- Physics
- Chemistry
- Biology
- Mathematics
- English
- Economics
- Psychology
- Social Studies
- Fashion Studies
- Legal Studies
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
What are the various return types of a controller action in C# ASP.NET WebAPI?
The Web API action method can have following return types.
Void
Primitive Type/Complex Type
HttpResponseMessage
IHttpActionResult
Void −
It's not necessary that all action methods must return something. It can have void return type.
Example
using DemoWebApplication.Models using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ public void Get([FromBody] Student student){ //Some Operation } } }
The action method with void return type will return 204 No Content response.
Primitive Type/Complex Type −
The action method can return primitive type like int, string or complex type like List etc.
Example
using DemoWebApplication.Models; using System.Collections.Generic; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ public List<string> Get([FromBody] Student student){ return new List<string>{ $"The Id of the Student is {student.Id}", $"The Name of the Student is {student.Name}" }; } } }
HttpResponseMessage −
Example
HttpResponseMessage is used when we want to customize the return type (action result) of an action method. Responses are customized by providing status code, content type, and data to be returned to HttpResponseMessage.
using DemoWebApplication.Models; using System.Net; using System.Net.Http; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ public HttpResponseMessage Get([FromBody] Student student){ if(student.Id > 0){ return Request.CreateResponse(HttpStatusCode.OK, $"The Sudent Id is {student.Id} and Name is {student.Name}"); } else { return Request.CreateResponse(HttpStatusCode.BadRequest, $"InValid Student Id"); } } } }
In the above example we could see that the Response is customized. Since the Id which is sent to the action method is 0, the else is executed and 400 Bad request is returned with the error message provided.
IHttpActionResult −
Example
The IHttpActionResult interface was introduced in Web API 2. Essentially, it defines an HttpResponseMessage factory. IHttpActionResult is present in System.Web.Http namespace. The advantages of using IHttpActionResult over HttpResponseMessage are as follows.
Simplifies unit testing your controllers.
Moves common logic for creating HTTP responses into separate classes.
Makes the intent of the controller action clearer, by hiding the low-level details of constructing the response.
Example
using DemoWebApplication.Models; using System.Collections.Generic; using System.Web.Http; namespace DemoWebApplication.Controllers{ public class DemoController : ApiController{ public IHttpActionResult Get([FromBody] Student student){ var result = new List<string>{ $"The Id of the Student is {student.Id}", $"The Name of the Student is {student.Name}" }; return Ok(result); } } }