- Trending Categories
Data Structure
Networking
RDBMS
Operating System
Java
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); } } }
- Related Articles
- What are the different types of filters in C# ASP.NET WebAPI?
- How to return custom result type from an action method in C# ASP.NET WebAPI?
- What are the advantages of using C# ASP.NET WebAPI?
- What are built-in message handlers in Asp.Net webAPI C#?
- How can we assign alias names for the action method in C# ASP.NET WebAPI?
- What is the usage of DelegatingHandler in Asp.Net webAPI C#?
- What is parameter binding in C# ASP.NET WebAPI?
- What is Content Negotiation in Asp.Net webAPI C#?
- What is the use of Authorize Attribute in C# Asp.Net webAPI?
- What are the various JSON files available in C# ASP.NET Core?
- How can we test C# Asp.Net WebAPI?
- What are the various types of contracts?
- What are the various types of branches?
- What is the difference between FromBody and FromUri attributes in C# ASP.NET WebAPI?
- How to resolve CORS issue in C# ASP.NET WebAPI?
