Build a URL Shortener API that helps shorten long URLs.
You are required to create a simple RESTful API that allows users to shorten long URLs. The API should provide endpoints to create, retrieve, update, and delete short URLs. It should also provide statistics on the number of times a short URL has been accessed.
You should create a RESTful API for a URL shortening service. The API should allow users to perform the following operations:
You can optionally setup a minimal frontend to interact with the API and setup redirects for the short URLs to the original URLs.
Given below are the details for each API operation.
Create a new short URL using the POST
method
POST /shorten
{
"url": "https://www.example.com/some/long/url"
}
The endpoint should validate the request body and return a 201 Created
status code with the newly created short URL i.e.
{
"id": "1",
"url": "https://www.example.com/some/long/url",
"shortCode": "abc123",
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z"
}
or a 400 Bad Request
status code with error messages in case of validation errors. Short codes must be unique and should be generated randomly.
Retrieve the original URL from a short URL using the GET
method
GET /shorten/abc123
The endpoint should return a 200 OK
status code with the original URL i.e.
{
"id": "1",
"url": "https://www.example.com/some/long/url",
"shortCode": "abc123",
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z"
}
or a 404 Not Found
status code if the short URL was not found. Your frontend should be responsible for retrieving the original URL using the short URL and redirecting the user to the original URL.
Update an existing short URL using the PUT
method
PUT /shorten/abc123
{
"url": "https://www.example.com/some/updated/url"
}
The endpoint should validate the request body and return a 200 OK
status code with the updated short URL i.e.
{
"id": "1",
"url": "https://www.example.com/some/updated/url",
"shortCode": "abc123",
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:30:00Z"
}
or a 400 Bad Request
status code with error messages in case of validation errors. It should return a 404 Not Found
status code if the short URL was not found.
Delete an existing short URL using the DELETE
method
DELETE /shorten/abc123
The endpoint should return a 204 No Content
status code if the short URL was successfully deleted or a 404 Not Found
status code if the short URL was not found.
Get statistics for a short URL using the GET
method
GET /shorten/abc123/stats
The endpoint should return a 200 OK
status code with the statistics i.e.
{
"id": "1",
"url": "https://www.example.com/some/long/url",
"shortCode": "abc123",
"createdAt": "2021-09-01T12:00:00Z",
"updatedAt": "2021-09-01T12:00:00Z",
"accessCount": 10
}
or a 404 Not Found
status code if the short URL was not found.
Feel free to use any programming language, framework, and database of your choice for this project. Here are some suggestions:
For databases, you can use:
Your job is to implement the core functionality of the API, focusing on creating, retrieving, updating, and deleting short URLs, as well as tracking and retrieving access statistics. You don’t have to implement authentication or authorization for this project.
Actively Maintained
We are always improving our content, adding new resources and adding features to enhance your learning experience.
Join the Community
roadmap.sh is the 7th most starred project on GitHub and is visited by hundreds of thousands of developers every month.
Roadmaps Best Practices Guides Videos FAQs YouTube
roadmap.sh by @kamrify @kamrify
Community created roadmaps, best practices, projects, articles, resources and journeys to help you choose your path and grow in your career.
Login to your account
You must be logged in to perform this action.