Oussama GHAIEB

Tips, tricks, and code snippets for developers

Crafting Clean and Consistent RESTful API Resource Naming Conventions

When designing a RESTful API, one of the foundational decisions you'll make is how to name your resources. Good naming conventions improve readability, usability, and maintainability, making your API intuitive for developers to use. Poor naming, on the other hand, can lead to confusion, misuse, and a steep learning curve. Let’s dive into the best practices for naming resources in a RESTful API and explore how to keep things clean, consistent, and user-friendly.

What’s a Resource, Anyway?

In REST, a resource is the core entity your API exposes—think "users," "orders," or "products." It’s the "thing" developers interact with via HTTP methods like GET, POST, PUT, and DELETE. The URI (Uniform Resource Identifier) is how you point to these resources, and naming them well is key to a great API design.

1. Use Nouns, Not Verbs

RESTful APIs rely on HTTP methods to define actions (GET to retrieve, POST to create, etc.), so your resource names should stick to nouns. This keeps the focus on the "what" rather than the "how."

  • Good: /users, /orders, /products
  • Bad: /getUsers, /createOrder, /deleteProduct

The URI describes the resource, while the HTTP method handles the action. For example, GET /users retrieves a list of users, and POST /users creates a new one—no verbs needed in the name.

2. Prefer Plural Nouns

Since resources often represent collections, plural nouns are the convention in most RESTful APIs. This makes it clear that the endpoint deals with multiple entities.

  • Good: /users, /orders, /articles
  • Bad: /user, /order, /article

For a specific resource, append an identifier: /users/123 gets the user with ID 123. Plural naming keeps things consistent whether you’re working with a collection or a single item.

3. Keep It Lowercase and Hyphenated

Stick to lowercase letters for readability and simplicity. If a resource name has multiple words, separate them with hyphens (-), not underscores (_) or camelCase. Hyphens are the web’s preferred separator and align with URL conventions.

  • Good: /user-profiles, /order-items
  • Bad: /UserProfiles, /order_items

This approach avoids case-sensitivity issues and looks cleaner in URLs.

4. Use Hierarchical Structure for Relationships

Resources often relate to one another, and your naming should reflect that hierarchy. Use forward slashes (/) to nest related resources logically.

  • Good: /users/123/orders, /orders/456/items
  • Bad: /userOrders/123, /orderItems/456

For example, /users/123/orders clearly shows you’re fetching orders belonging to user 123. It’s intuitive and mirrors how we think about relationships in the real world.

5. Avoid File Extensions

Your API isn’t serving static files—it’s delivering data. Skip file extensions like .json or .xml in resource names. Instead, use the Accept header in HTTP requests to specify the response format.

  • Good: /users
  • Bad: /users.json

This keeps your URIs focused on resources, not presentation details.

6. Be Consistent with Singular Sub-Resources

When a resource has a single, unique sub-resource (not a collection), use a singular noun. For instance, if each user has one profile, you might use:

  • Good: /users/123/profile
  • Bad: /users/123/profiles

This signals that profile is a singleton, not a list.

7. Handle Actions with Query Parameters or Sub-Resources

Sometimes, you need to represent actions that don’t fit neatly into CRUD operations (create, read, update, delete). Avoid turning these into resource names with verbs. Instead, use query parameters or sub-resources.

  • Good: /users?filter=active, /orders/456/status
  • Bad: /getActiveUsers, /updateOrderStatus

For example, GET /users?filter=active fetches active users, keeping the resource name noun-based.

8. Version Your API Cleanly

If your API evolves, include versioning in the URI to avoid breaking changes. Place the version at the root level to keep resource names consistent across versions.

  • Good: /v1/users, /v2/users
  • Bad: /users/v1, /usersV1

This structure separates versioning from the resource itself, making it easier to manage updates.

9. Keep It Short but Descriptive

Resource names should be concise yet meaningful. Avoid cryptic abbreviations or overly long names that bloat the URI.

  • Good: /products, /categories
  • Bad: /prod, /productCategoriesAndSubcategories

Strike a balance—short enough to type, descriptive enough to understand.

Why It Matters

A well-named API is self-documenting. Developers can guess what /users/123/orders does without digging through docs. Consistency builds trust, reduces errors, and speeds up integration. Plus, it’s just more pleasant to work with an API that feels thoughtfully designed.

Wrapping Up

Naming RESTful API resources isn’t rocket science, but it does require intentionality. Stick to nouns, use plurals for collections, leverage hierarchy for relationships, and keep it simple. By following these conventions, you’ll create an API that’s not only functional but also a joy to use. Next time you’re sketching out endpoints, think: Would I understand this URI if I saw it for the first time? If the answer’s yes, you’re on the right track.

Happy designing!

Tags: #API
Oussama GHAIEB - Laravel Certified Developer in Paris

Oussama GHAIEB

Laravel Certified Developer | Full-Stack Web Developer in Paris

14+ years experience 20+ projects
Read more about me →

Comments (0)

No comments yet. Be the first to comment!


Leave a Comment

More Posts :