rest-api-design
Design RESTful APIs following best practices for resource modeling, HTTP methods, status codes, versioning, and documentation. Use when creating new APIs, designing endpoints, or improving existing API architecture.
By aj-geddes · 1,993 installs
npx skills add aj-geddes/useful-ai-prompts --skill rest-api-design
Source repository · Upstream listing
REST API Design
Table of Contents
[Overview]( overview)
[When to Use]( when to use)
[Quick Start]( quick start)
[Reference Guides]( reference guides)
[Best Practices]( best practices)
Overview
Design REST APIs that are intuitive, consistent, and follow industry best practices for resource oriented architecture.
When to Use
Designing new RESTful APIs
Creating endpoint structures
Defining request/response formats
Implementing API versioning
Documenting API specifications
Refactoring existing APIs
Quick Start
Minimal working example:
Reference Guides
Detailed implementations in the references/ directory:
Guide Contents
[Resource Naming](references/resource naming.md) Resource Naming, HTTP Methods & Operations
[Request Examples](references/request examples.md) Request Examples
[Query Parameters](references/query parameters.md) Query Parameters
[Response Formats](references/response formats.md) Response Formats
[HTTP Status Codes](references/http status codes.md) HTTP Status Codes, API Versioning, Authentication & Security, Rate Limiting Headers
[OpenAPI Documentation](references/openapi documentation.md) OpenAPI Documentation
[Complete Example: Express.js](references/complete example expressjs.md) const express = require("express");
Best Practices
✅ DO
Use nouns for resources, not verbs
Use plural names for collections
Be consistent with naming conventions
Return appropriate HTTP status codes
Include pagination for collections
Provide filtering and sorting options
Version your API
Document thoroughly with OpenAPI
Use HTTPS
Implement rate limiting
Provide clear error messages
Use ISO 8601 for dates
❌ DON'T
Use verbs in endpoint names
Return 200 for errors
Expose internal IDs unnecessarily
Over nest resources (max 2 levels)
Use inconsistent naming
Forget authentication
Return sensitive data
Break backward compatibility without versioning