Why does one tiny naming choice make your whole API easier or harder to use?
Plural vs singular resource names in Rest API - When to Use Which
Imagine you are building a website where users can manage books. You decide to name your API endpoints randomly--sometimes using singular names like /book, other times plural like /books. This inconsistency confuses both you and anyone else using your API.
Without a clear rule, your API becomes hard to remember and maintain. Clients might guess the wrong endpoint, causing errors. Documentation gets messy, and your team wastes time fixing misunderstandings instead of building features.
Using a consistent rule--like always using plural names for resource collections (/books) and singular for single items (/books/123)--makes your API predictable and easy to use. Everyone knows what to expect, reducing mistakes and speeding up development.
GET /book POST /books GET /books/123 DELETE /book/123
GET /books POST /books GET /books/123 DELETE /books/123
This consistency lets developers quickly understand and use your API, making collaboration smoother and your app more reliable.
Think of a library app where /books returns all books, and /books/123 returns one specific book. This clear pattern helps both frontend and backend teams work together without confusion.
Inconsistent naming causes confusion and errors.
Using plural names for collections and singular for items creates clarity.
Consistent API design improves teamwork and speeds development.
Practice
/user or /users?Solution
Step 1: Understand resource naming for collections
API endpoints returning multiple items should use plural names to clearly indicate a list.Step 2: Apply naming to the example
Since the endpoint returns multiple users,/usersis the correct plural form.Final Answer:
/usersbecause it represents multiple users. -> Option DQuick Check:
Plural for lists =/users[OK]
- Using singular for list endpoints
- Confusing singular and plural forms
- Choosing shorter names over clarity
Solution
Step 1: Identify singular vs plural for single item access
When accessing a single item by ID, use the plural form of the resource name followed by the ID.Step 2: Match the correct endpoint format
The endpoint/products/123uses pluralproductsand includes the ID, which is the common RESTful convention.Final Answer:
/products/123-> Option AQuick Check:
Single item access = plural + ID [OK]
- Using singular resource name for single item
- Omitting the ID when accessing a single item
- Mixing singular/plural inconsistently
GET /order
GET /orders
GET /order/456
GET /orders/456
Solution
Step 1: Identify endpoints returning lists
Endpoints returning lists should use plural resource names without an ID.Step 2: Analyze each option
GET /ordersuses plural and no ID, so it returns the list of orders. Others either use singular or include an ID, indicating single item access.Final Answer:
GET /orders -> Option CQuick Check:
List retrieval = plural resource without ID [OK]
- Choosing singular endpoint for list
- Confusing ID presence with list retrieval
- Ignoring plural vs singular rules
GET /users/ to get a list of users and GET /user/{id} to get a single user. A developer mistakenly uses GET /user/ to get all users. What is the likely problem?Solution
Step 1: Understand endpoint naming conventions
List retrieval requires plural resource name, so/users/is correct for all users.Step 2: Analyze the incorrect usage
/user/is singular and without an ID, so it likely does not exist or returns an error like 404.Final Answer:
The endpoint/user/is incorrect for list retrieval and may cause a 404 error. -> Option AQuick Check:
Singular without ID ≠ list endpoint [OK]
- Using singular endpoint for list retrieval
- Assuming singular endpoint returns list
- Expecting automatic redirects between endpoints
Solution
Step 1: Recall naming rules for collections and single items
Use plural resource names for collections (all books) and singular for single items by ID.Step 2: Match options to rules
GET /bookscorrectly retrieves all books (plural).GET /book/{id}correctly retrieves a single book (singular with ID).Final Answer:
GET /booksfor all books andGET /book/{id}for a single book -> Option BQuick Check:
Plural for list, singular + ID for single [OK]
- Swapping singular and plural for list vs single
- Using singular without ID for list
- Using plural with ID for single item
Ready to prove it?
Pass the test and this pattern moves unknown
