You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
aspnet-basics/3-http-responses-and-status...

3.3 KiB

HTTP Responses & Status Codes

HTTP Responses

  • HTTP responses have the following format:
    • Status line: HTTP version, status code, reason phrase
      • HTTP/1.1 200 OK
    • Headers (optional)
      • Date: Mon, 07 Sep 2020 08:39:33 GMT
      • Content-Type: application/json
    • Body (optional)
  • {
  • "date": "2020-09-08T11:39:34.2837813+03:00",
  • "temperatureC": 11,
  • "temperatureF": 51,
  • "summary": "Cool"
  • }

Status Codes

  • The status line of HTTP a response sent by an API should accurately describe the status of what has happened on the server after each request:
    • Did the operation succeed? (2xx status codes)
    • Was there an error with the request, i.e. the request line was malformed, or the server doesn't support it (4xx status codes)
    • Did a server side exception occur? (5xx status codes)
      • This is never the client's fault

Status Codes (continued)

Your APIs should use the following status codes for responses to CRUD operations:

2xx SUCCESS 4xx CLIENT ERROR 5xx SERVER ERROR
200 - OK 400 - Bad Request 500 - Internal Server Error
201 - Created 401 - Unauthorized
204 - No Content 403 - Forbidden
404 - Not Found
409 - Conflict

https://restfulapi.net/http-status-codes/

ASP.NET Status Codes

  • There are multiple possible status codes for each action
  • The ControllerBase which the controllers should inherit from includes result methods for creating ActionResult objects
    • All ActionResult objects implement IActionResult
    • Includes at least a status code, and can contain data such as view items or an error message
    • This result is processed into a response to then send to client

ASP.NET Result Methods

Status Code Result Method Use
200 - OK _Ok() GET, DELETE
201 - Created _Created() POST
204 - No content _NoContent() PUT, PATCH
400 - Bad request _BadRequest() POST, PUT, PATCH
404 - Not found _NotFound() All actions
Custom _StatusCode() All actions

ASP.NET Status Codes (continued)

[HttpGet("{id}")]

public IActionResult GetContactById(int id)

{

// Contacts = list of contact objects, fetched from some repository

var contact = Contacts.FirstOrDefault(c => c.Id == id);

if (contact == null)

{

return NotFound();

}

return Ok(contact);

}

The previous code first attempts to find a Contacts object using the ID provided in the URI parameter

If an item is not found, a 404 response is returned using NotFound()

Otherwise, the object is sent as a payload with a 200 OK code response using Ok(contact)

Exercise 1: Returning Status Codes

Without using parameter constraints, modify your number list method from Lecture 2, Exercise 2 to return a status code 400 (Bad Request) if k is smaller than one or larger than 100.

Add a helpful error message to the result for both cases. The message should be seen as a message body in the response.

Test with Swagger/Postman.