Handling requests
When a Runnable is used to handle an HTTP request, Atmo will bind that request to the Runnable. The req
or request
namespace of the Runnable API can then be used to access all of the information about the request. Note if the Runnable is not being used to handle a request, then all methods in the req
namespace will return empty or an error.
- Rust
- JavaScript/TypeScript
- AssemblyScript
- Swift
In Rust these methods are available under the req
module:
# Use the "req" module
use suborbital::req;
# Invoke the "State" method
req::state(…)
In JavaScript and TypeScript the methods live on the request
import:
import { request } from "@suborbital/runnable"
request.state(…)
In AssemblyScript all methods are prefixed with req
:
// Import then invoke "State" method
import { reqState } from '@suborbital/suborbital'
reqState(…)
In Swift these methods are prefixed with Req
:
The following namespace methods are available:
Method
Returns the HTTP method for the request:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn method() -> String
request.method(): string
function reqMethod(): string
URL
Returns the full URL of the request:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn url() -> String
request.url(): string
function reqURL(): string
ID
Returns the unique ID assigned to the request by Atmo:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn id() -> String
request.id(): string
function reqID(): string
Body
Returns the full request body as bytes:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn body_raw() -> Vec<u8>
// Get request body as a JavaScript string
request.body(): string
// Get request body as raw bytes
request.bodyBytes(): Uint8Array
function reqBody(): ArrayBuffer
Body Field
Returns the value for the provided key, if the request body is formatted as JSON:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn body_field(key: &str) -> String
request.bodyField(key: string): string
function reqBodyField(key: string): string
Header
Returns the header value for the provided key:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn header(key: &str) -> String
request.header(key: string): string
function reqHeader(key: string): string
URL Parameter
Returns the value of a given parameter when a handler is using parametrized endpoints such as /api/v1/user/:uuid
.
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn url_param(key: &str) -> String
request.urlParam(key: string): string
function reqURLParam(key: string): string
State
Returns the value from request state for the provided key:
- Rust
- JavaScript & TypeScript
- AssemblyScript
pub fn state(key: &str) -> Option<String>
// Value of the state key as a JavaScript string
request.state(key: string): string
// Value of the state key as raw bytes
request.stateBytes(key: string): Uint8Array
function reqState(key: string): string