HTTP response status codes which Beginners should know at first.
Tags: webdev, beginners, programming, http
Published: 2024-04-27 18:19:34

## Table of contents
1. At the beginning
2. What is HTTP response status codes?
3. Which HTTP response status codes do beginners should know at first?
 * 200 OK
 * 201 Created
 * 400 Bad Request
 * 401 Unauthorized
 * 403 Forbidden
 * 404 Not Found
 * 500 Internal Server Error
4. Conclusion 

## At the beginning
When I first started learning web development, I was overwhelmed by lots of HTTP status codes - it seemed impossible for to memorize them all. However, as I continued developing more applications, I realized that there are only a couple of status codes that beginners really need to know at first.
This article would be the first step in learning this for beginners.


## What is HTTP response status codes?
HTTP response status codes are 3-digit numbers that are part of the HTTP protocol which refers to the rules and conventions for exchanging information on the web.
They are returned by web servers to indicate the status of a client's request. The status codes are grouped into the following 5 categories.

* 1xx Informational
* 2xx Success
* 3xx Redirection
* 4xx Client Error
* 5xx Server Error

### 1xx　Informational
This indicates that the request was received and is being processed（100 Continue, 102 Processing）.

### 2xx　Success
This indicates that the request was received, understood, and accepted successfully(200 OK, 201 Created, 204 No Content).

### 3xx　Redirection
This indicates that further action needs to be taken by the client in order to complete the request(301 Moved Permanently, 302 Found, 304 Not Modified).

### 4xx　Client Error
This indicates that there was a problem with the request from the client.(400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found).

### 5xx　Server Error
This indicates that there was a problem on the server side in fulfilling the request(500 Internal Server Error, 501 Not Implemented, 503 Service Unavailable).

## Which HTTP response status codes do beginners should know at first?


### 200 OK
This indicates that the request was successful. It's the most common success status code.
```JavaScript
// When you can sign-in successfully
return res.status(200).json({ message: "Sign In out successfully" });

// When you can logout successfully
return res.status(200).json({ message: "Logout successfully" });

// When a client sends a GET request to retrieve a list of users
app.get('/users', (req, res) => {
  const users = [/* fetch users from database */];
  res.status(200).json(users);
});
```



### 201 Created
This is returned whenever a new resource is created on the server, for example, after a successful POST request to create a new record.
```JavaScript
// When a client sends a POST request to create a new user
app.post('/users', (req, res) => {
  const newUser = req.body;
  // save newUser to database
  res.status(201).json(newUser);
});
```

### 400 Bad Request
This indicates that the request wasn't formed correctly or invalid. It's a client-side error.

```JavaScript
const { name, email } = req.body;

// Check if required fields are present
if (!name || !email) {
  return res.status(400).json({ error: 'Name and email are required' });
}
```

### 401 Unauthorized
This indicates that the client has not been authenticated or has provided invalid credentials.

```JavaScript
// When you fail the process of user authentication
return res.status(401).send({ message: "Authentication failed" });

// When the JWT token is missing from the request　and respond
const token = req.cookies.token;
if (!token) return res.status(401).json({ message: "Not Authenticated!" });

```

### 403 Forbidden
This indicates that the client has provided valid authentication credentials, but it does not have permission or authorization to access the requested resource.

```JavaScript
// When a non-admin user attempts to access some actions
if (user.isAdmin !== 'admin') {
  return res.status(403).json({ error: 'Forbidden: Insufficient permissions' });
}
```


### 404 Not Found
This indicates that the requested resource does not exist on the server. It's still considered a client-side error, even though it may seem like it's related to the server. The reason for this is that when the client sends a request for a resource, it's the client's responsibility to request a valid resource that exists on the server. 

```JavaScript
// When user can't be found
const user = getUserById(userId);
if (!user) {
  return res.status(404).json({ error: "User not found" });
}

// When comment can't be found
const comment = getCommentById(commentId);
if (!comment) {
  return res.status(404).json({ error: "Comment not found" });
```


### 500 Internal Server Error
This is a generic server-side error code, indicating that something went wrong on the server, but the issue is unknown.

```JavaScript
return res.status(500).json({ error: "Internal server error" });
```


## Conclusion
It's really important for us to understand which HTTP status codes should be used when we create web applications.
Other articles are informative, so I summarize them in this article.
If you are interested in learning them, you can search more deeply.