Skip to content

k.request

HTTP request information - obtain various data requested by the client

Overview

k.request provides an interface for obtaining HTTP request information, including query parameters, form data, file upload, client information, etc.

TypeScript definition

ts
interface Request {
  queryString: KDictionary;      // URL query parameters
  form: KDictionary;             // Form data
  files: UploadFile[];           // Uploaded files
  body: string;                  // Request body text
  culture: string;                // Culture/language setting
  model: any;                    // Request model
  method: string;                // HTTP method (GET/POST/PUT/DELETE)
  clientIp: string;              // Client IP address
  clientCountry: CountryLocationModel; // Client country information
  headers: KDictionary;          // Request headers
  url: string;                   // Current request URL
  host: string;                  // Host name
  page: Page;                    // Current page object

  get(key: string): string;      // Get dynamic route parameters
  setCulture(culture: string): void;
  resetCulture(): void;
}

interface UploadFile {
  bytes: string;                 // File binary content (Base64)
  contentType: number;           // MIME type
  fileName: string;              // File name
  name: string;                  // Form field name
  save(filename: string): FileInfo; // Save file
}

Properties

queryString

Get URL query parameters.

ts
// GET /api/users?page=1&limit=10
k.api.get(() => {
    const page = k.request.queryString.get("page")   // "1"
    const limit = k.request.queryString.get("limit")  // "10"
    return { page, limit }
})
// Returns: { "page": "1", "limit": "10" }

form

Get form data for POST/PUT requests.

ts
k.api.post(() => {
    const data = k.request.form
    return { received: data }
})

files

Get the list of uploaded files.

ts
k.api.post(() => {
    if (k.request.files.length > 0) {
        k.request.files.forEach((item) => {
            // Save to KFile
            item.save(item.fileName)
        })
    }
    return { uploaded: k.request.files.length }
})

headers

Get HTTP request headers.

ts
k.api.get(() => {
    const headers = k.request.headers
    return {
        accept: headers.get("Accept"),
        userAgent: headers.get("UserAgent"),
        cookie: headers.get("Cookie")
    }
})

clientIp

Get the client IP address (IPv4 only).

ts
k.api.get(() => {
    return { ip: k.request.clientIp }
})
// Returns: { "ip": "120.36.245.209" }

body

Get the request body text content (usually used for POST/PUT).

note

k.request.body returns the original string and needs to be parsed manually:

ts
const data = JSON.parse(k.request.body)
ts
k.api.post(() => {
    const body = k.request.body
    return { body }
})
// Returns the raw request body text

Parse JSON data:

ts
k.api.post(() => {
    const { username, password } = JSON.parse(k.request.body || '{}')
    return { username }
})

method

Get the HTTP request method.

ts
k.api.get(() => {
    return { method: k.request.method }
})
// Returns: { "method": "GET" }

url/host

Get the URL and hostname of the current request.

ts
k.api.get(() => {
    return {
        url: k.request.url,    // "/api/users"
        host: k.request.host   // "example.kooboo.cn"
    }
})

Methods

get(key)

Get dynamic routing parameters.

ts
// Assume the route is: /api/users/{id}
/api/users/123

k.api.get(() => {
    const id = k.request.get("id")  // "123"
    return { id }
})

priority description

If query string parameters (queryString) and dynamic route parameters have the same name, k.request.get() will return the request parameters first.