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
:
// Invoke the "State" method
Suborbital.ReqState(…)
The following namespace methods are available:
Method
Returns the HTTP method for the request:
- Rust
- JavaScript & TypeScript
- AssemblyScript
- Swift
pub fn method() -> String
request.method(): string
function reqMethod(): string
public func ReqMethod() -> String
URL
Returns the full URL of the request:
- Rust
- JavaScript & TypeScript
- AssemblyScript
- Swift
pub fn url() -> String
request.url(): string
function reqURL(): string
public func ReqURL() -> String
ID
Returns the unique ID assigned to the request by Atmo:
- Rust
- JavaScript & TypeScript
- AssemblyScript
- Swift
pub fn id() -> String
// Get request body as a JavaScript string
request.body(): string
// Get request body as raw bytes
request.bodyBytes(): Uint8Array
function reqBody(): ArrayBuffer
public func ReqBodyRaw() -> String
Body Field
Returns the value for the provided key, if the request body is formatted as JSON:
- Rust
- JavaScript & TypeScript
- AssemblyScript
- Swift
pub fn body_field(key: &str) -> String
request.bodyField(key: string): string
function reqBodyField(key: string): string
public func ReqBodyField(key: String) -> String
Header
Returns the header value for the provided key:
- Rust
- JavaScript & TypeScript
- AssemblyScript
- Swift
pub fn header(key: &str) -> String
request.header(key: string): string
function reqHeader(key: string): string
public func 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
- Swift
pub fn url_param(key: &str) -> String
request.urlParam(key: string): string
function reqURLParam(key: string): string
public func ReqParam(key: String) -> String
State
Returns the value from request state for the provided key:
- Rust
- JavaScript & TypeScript
- AssemblyScript
- Swift
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
public func State(key: String) -> String