qmd-web / eval-docs /api-design-principles.md
shreyask's picture
fix: add eval-docs to root for HF static serving
6534024 verified

API Design Principles

Introduction

Good API design is crucial for developer experience. This document outlines the core principles we follow when designing REST APIs.

Principle 1: Use Nouns, Not Verbs

URLs should represent resources, not actions. Use HTTP methods to indicate the action.

Good:

  • GET /users/123
  • POST /orders
  • DELETE /products/456

Bad:

  • GET /getUser?id=123
  • POST /createOrder
  • GET /deleteProduct/456

Principle 2: Use Plural Nouns

Always use plural nouns for consistency.

  • /users (not /user)
  • /orders (not /order)
  • /products (not /product)

Principle 3: Hierarchical Relationships

Express relationships through URL hierarchy.

  • GET /users/123/orders - Get all orders for user 123
  • GET /users/123/orders/456 - Get specific order 456 for user 123

Principle 4: Filtering and Pagination

Use query parameters for filtering, sorting, and pagination.

  • GET /products?category=electronics&sort=price&page=2&limit=20

Principle 5: Versioning

Always version your APIs. We prefer URL versioning.

  • /v1/users
  • /v2/users

Principle 6: Error Handling

Return consistent error responses with appropriate HTTP status codes.

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Email format is invalid",
    "field": "email"
  }
}

Principle 7: Rate Limiting

Implement rate limiting and communicate limits via headers:

  • X-RateLimit-Limit: 1000
  • X-RateLimit-Remaining: 999
  • X-RateLimit-Reset: 1640000000

Conclusion

Following these principles leads to APIs that are intuitive, consistent, and easy to maintain. Remember: the best API is one that developers can use without reading documentation.