The fundamentals described on this page are supported identically by all major implementations.
File extensions
Section titled “File extensions”All major implementations recognize .http as the primary file extension.
.rest is recognized as an alias by VS Code REST Client, httpyac, Visual Studio 2022, and kulala.nvim. JetBrains HTTP Client uses .http exclusively in documentation but the IDE also recognizes .rest.
Encoding
Section titled “Encoding”Files are assumed to be UTF-8 unless otherwise specified. The JetBrains spec notes that request bodies are encoded per Content-Type header, defaulting to UTF-8.
Non-ASCII characters in URLs are percent-encoded per RFC 3986. Implementations should not double-encode already-encoded characters.
Multiple requests per file
Section titled “Multiple requests per file”All implementations support multiple requests in a single file, separated by request separators (###). Each request is independent and can be executed individually.
GET https://api.example.com/users/1
###
POST https://api.example.com/usersContent-Type: application/json
{"name": "New User"}
###
DELETE https://api.example.com/users/2See Section 3: Separators & Comments for details on separator syntax.
Structure of a request
Section titled “Structure of a request”A request block consists of:
- Request line — method, URL, and optional HTTP version
- Headers — one per line,
Name: Valueformat - Blank line — separates headers from body
- Body — everything until the next
###separator or response handler
POST https://api.example.com/dataContent-Type: application/jsonAuthorization: Bearer mytoken123
{ "key": "value"}Each of these elements is covered in detail in Section 2: Requests.