Java REST API Design Principles
Apply REST API design principles for Spring Boot applications.
What is covered in this Skill?
- HTTP methods (GET, POST, PUT, PATCH, DELETE) — semantic consistency
- Resource URI design
- HTTP status codes
- Request/response DTOs with lean contracts
- API versioning (URI, header, or media type — applied consistently)
- Bean Validation at the boundary (@Valid/@Validated on controller inputs, 400 on failure)
- Pagination, sorting, and filtering (Page/Pageable with caps)
- ISO-8601 instants with offset (OffsetDateTime, Instant) in JSON contracts
- Content negotiation (JSON default; vendor media types when meaningful)
- Idempotency-Key support for POST creates; 409 Conflict for collisions
- ETag concurrency with If-Match/If-None-Match; 412 Precondition Failed / 304 Not Modified
- HTTP caching discipline (Cache-Control, ETag, Last-Modified)
- Deprecation and sunset headers (Deprecation, Sunset, Link rel="successor-version)"
- Error handling
- API security (TLS, authentication, authorization, input validation)
- API contract: OpenAPI file as source of truth for API-first (OpenAPI Generator)
- Controller advice and problem details (RFC 7807)
Scope: Apply recommendations based on the reference rules and good/bad code examples.
Constraints
Before applying any REST API changes, ensure the project compiles. If compilation fails, stop immediately. After applying improvements, run full verification.
- MANDATORY: Run
./mvnw compile or mvn compile before applying any change
- SAFETY: If compilation fails, stop immediately
- VERIFY: Run
./mvnw clean verify or mvn clean verify after applying improvements
- BEFORE APPLYING: Read the reference for detailed rules and good/bad patterns
- EDGE CASE: If request scope is ambiguous, stop and ask a clarifying question before applying changes
- EDGE CASE: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance
When to use this skill
- Review Java code for Spring Boot REST API
- Apply best practices for Spring Boot REST API in Java code
Workflow
- Read reference and assess project context
Read references/302-frameworks-spring-boot-rest.md and inspect the current project setup before proposing changes.
- Gather scope and decide target improvements
Identify requested outcomes, constraints, and the minimum safe set of changes to apply.
- Apply framework-aligned changes
Implement or refactor configuration/code following the reference patterns and project conventions.
- Run verification and report results
Execute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions.
Reference
For detailed guidance, examples, and constraints, see references/302-frameworks-spring-boot-rest.md.
1---2name: 302-frameworks-spring-boot-rest3description: Use when you need to design, review, or improve REST APIs with Spring Boot — including HTTP methods, resource URIs, status codes, DTOs, versioning, deprecation and sunset headers, content negotiation (JSON and vendor media types), ISO-8601 instants in DTOs, pagination/sorting/filtering, Bean Validation at the boundary, idempotency, ETag concurrency, HTTP caching, error handling, security, contract-first OpenAPI (OpenAPI Generator), controller advice, and problem details for errors. This should trigger for requests such as Review Java code for Spring Boot REST API; Apply best practices for Spring Boot REST API in Java code. Part of cursor-rules-java project4license: Apache-2.05---6# Java REST API Design Principles
7
8Apply REST API design principles for Spring Boot applications.
9
10**What is covered in this Skill?**
11
12- HTTP methods (GET, POST, PUT, PATCH, DELETE) — semantic consistency
13- Resource URI design
14- HTTP status codes
15- Request/response DTOs with lean contracts
16- API versioning (URI, header, or media type — applied consistently)
17- Bean Validation at the boundary (@Valid/@Validated on controller inputs, 400 on failure)
18- Pagination, sorting, and filtering (Page/Pageable with caps)
19- ISO-8601 instants with offset (OffsetDateTime, Instant) in JSON contracts
20- Content negotiation (JSON default; vendor media types when meaningful)
21- Idempotency-Key support for POST creates; 409 Conflict for collisions
22- ETag concurrency with If-Match/If-None-Match; 412 Precondition Failed / 304 Not Modified
23- HTTP caching discipline (Cache-Control, ETag, Last-Modified)
24- Deprecation and sunset headers (Deprecation, Sunset, Link rel="successor-version)"
25- Error handling
26- API security (TLS, authentication, authorization, input validation)
27- API contract: OpenAPI file as source of truth for API-first (OpenAPI Generator)
28- Controller advice and problem details (RFC 7807)
29
30**Scope:** Apply recommendations based on the reference rules and good/bad code examples.
31
32## Constraints
33
34Before applying any REST API changes, ensure the project compiles. If compilation fails, stop immediately. After applying improvements, run full verification.
35
36- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change
37- **SAFETY**: If compilation fails, stop immediately
38- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements
39- **BEFORE APPLYING**: Read the reference for detailed rules and good/bad patterns
40- **EDGE CASE**: If request scope is ambiguous, stop and ask a clarifying question before applying changes
41- **EDGE CASE**: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance
42
43## When to use this skill
44
45- Review Java code for Spring Boot REST API
46- Apply best practices for Spring Boot REST API in Java code
47
48## Workflow
49
501. **Read reference and assess project context**
51
52Read `references/302-frameworks-spring-boot-rest.md` and inspect the current project setup before proposing changes.
53
542. **Gather scope and decide target improvements**
55
56Identify requested outcomes, constraints, and the minimum safe set of changes to apply.
57
583. **Apply framework-aligned changes**
59
60Implement or refactor configuration/code following the reference patterns and project conventions.
61
624. **Run verification and report results**
63
64Execute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions.
65
66## Reference
67
68For detailed guidance, examples, and constraints, see [references/302-frameworks-spring-boot-rest.md](references/302-frameworks-spring-boot-rest.md).