HTTP Methods Cheatsheet - REST/HTTP Verbs & Idempotency
The hard part of HTTP methods is not recalling the definitions but choosing the right verb for a concrete operation and reasoning about retries and concurrency. This sheet groups verbs by semantics and puts idempotency, safety, body conventions and paired status codes side by side, concentrating on the combinations that actually bite. PUT is a full replacement, so an omitted field becomes a deletion, while PATCH changes only what you send. POST is not idempotent, so a retry creates a duplicate order unless an idempotency key is present. GET and HEAD are safe methods; mutating state inside them breaks the semantics and gets amplified by prefetchers and proxies. Two practical tests decide usage: before shipping, ask whether a client retry would produce a second record, and if so require idempotent design; then ask whether the change can be expressed as a delta, and use full replacement when it cannot. The split with the status-code sheet is deliberate: that one decides what you return, this one decides why you picked the verb.
Core Methods 7
GETPOSTPUTPATCHDELETEHEADOPTIONSIdempotency & Safety 4
Safe methodsIdempotent methodsNon-idempotentIdempotency-KeyStatus Pairing 6
GET → 200 / 304POST → 201 / 202PUT → 200 / 204PATCH → 200 / 204DELETE → 204 / 200Method Not Allowed → 405Common Mistakes 4
Change state with GETUse PUT as PATCHDuplicate POST submissionsDELETE returns 200 with a bodyREST Design Conventions 6
GET /usersGET /users/1POST /usersPUT /users/1PATCH /users/1DELETE /users/1Tips
- PUT sends the full resource — missing fields get cleared; use PATCH for partial updates.
- GET/HEAD/OPTIONS are safe methods — never change server state inside them.
- Retrying POST needs an Idempotency-Key, or you may create duplicate resources.
- The HTTP Status Codes sheet is provided separately; use both when designing APIs.
FAQ
What is the difference between HTTP 302 and 307?
Both are temporary redirects, but 302 lets browsers rewrite POST into GET (many legacy implementations do), while 307 explicitly preserves the original method and body, so POST stays POST. 301 is permanent and typically coerces methods to GET; use 307 when you must keep POST semantics and payload.
Should I use PUT or PATCH?
PUT replaces the whole resource: the client sends the full representation and missing fields are treated as cleared, and it is idempotent so repeats give the same result. PATCH does a partial update with only changed fields but is not guaranteed idempotent. Use PATCH for incremental updates and PUT for full replacement or create.
Can a GET request carry a body?
The spec does not forbid it, but in practice it is unreliable — proxies, caches and CDNs often ignore or drop it, and GET is defined as side-effect-free and cacheable. Send complex queries via URL parameters, or switch to POST when data is large or structurally sensitive. Do not depend on a GET body.
What does idempotency mean and which HTTP methods are idempotent?
Idempotent means repeating the same request any number of times leaves the server state identical, so retries are harmless. GET, PUT, DELETE, HEAD and OPTIONS are idempotent; POST is not, so resending it creates multiple resources. Only auto-retry idempotent requests, and dedupe POST with something like an idempotency key.
Should an API return 404 or 405?
404 means the resource does not exist (wrong path or already gone); 405 means the resource exists but the method is unsupported (e.g. DELETE on a read-only resource) and should include an Allow header listing valid methods. Wrong paths give 404, wrong methods give 405; some APIs return 404 for both as a security boundary, but distinct codes ease integration.
Official References
Each command links to its official documentation below, so you can verify the latest usage and read deeper.
Maintained by LaoHand
Publicly updated on Aug 2, 2026, continuously proofread against official docs.
Contact Us
Wrong command or description? Send us corrections, business inquiries or product feedback by email.
Contact Us