Skip to content
UNASPACE

REST API is a common way for apps to communicate over HTTP.

In a REST API, the server exposes resources like users, products, or orders.

Most REST APIs send and receive JSON.



REST stands for Representational State Transfer.

You do not need to remember the full name.

The important idea is this:

  • the URL points to a resource
  • the HTTP method tells what action you want

Example:

  • GET /users means get all users
  • GET /users/1 means get one user
  • POST /users means create a new user

A resource is the thing your API works with.

Examples:

  • users
  • posts
  • products
  • orders

An endpoint is a specific method and path together.

Examples:

  • GET /users
  • POST /users
  • DELETE /users/1

These are the main methods you need to know:

MethodPurpose
GETread data
POSTcreate new data
PUTreplace all data
PATCHupdate part of data
DELETEremove data

Simple example:

ActionRoute
Get all usersGET /users
Get one userGET /users/1
Create a userPOST /users
Update a userPATCH /users/1
Delete a userDELETE /users/1

Use a route param when you want one specific item.

Example:

GET /users/42

Here, 42 is the user id.


Use query params for filtering, searching, sorting, or pagination.

Examples:

  • GET /users?role=admin
  • GET /users?page=2
  • GET /products?sort=price

Simple rule:

  • route param = one item
  • query param = change the list

When a client sends a request, it usually contains:

  • a method
  • a URL
  • sometimes headers
  • sometimes a body

Example request body:

{
"name": "Alice",
"email": "alice@example.com"
}

Example JSON response:

{
"id": 1,
"name": "Alice",
"email": "alice@example.com"
}

Status codes tell the client what happened.

Common ones:

  • 200 OK for success
  • 201 Created for a new item
  • 400 Bad Request for invalid input
  • 401 Unauthorized when login is required
  • 404 Not Found when the resource does not exist
  • 500 Internal Server Error when the server fails

app.get('/users', (req, res) => {
res.json([
{ id: 1, name: 'Alice' },
{ id: 2, name: 'Bob' },
]);
});
app.post('/users', (req, res) => {
res.status(201).json({ id: 3, name: 'Charlie' });
});

In this example:

  • GET /users returns data
  • POST /users creates data
  • res.json() sends JSON back

  • keep routes simple and predictable
  • use nouns like /users and /products
  • return JSON consistently
  • use the correct status code
  • keep request and response shapes clear
Built with passion by Ngineer Lab