public struct PrismHTTPRequest: Sendable { public let method: PrismHTTPMethod // .GET, .POST, .PUT, etc. public let uri: String // "/users/42?active=true" public let path: String // "/users/42" public let version: String // "HTTP/1.1" public var headers: PrismHTTPHeaders // Request headers public var body: Data? // Raw body data public var parameters: [String: String] // Route params (:id -> "42") public let queryParameters: [String: String] // ?active=true public var userInfo: [String: String] // Custom middleware data}
await server.post("/upload") { request in let parts = try request.multipartParts() for part in parts { if let filename = part.filename { // File part print("File: \(filename), size: \(part.data.count)") } else { // Form field print("Field \(part.name): \(part.stringValue ?? "")") } } return .json(["uploaded": parts.count])}
await server.post("/register") { request in let result = request.validate { v in v.field("email", .required, .email) v.field("password", .required, .minLength(8)) v.field("age", .required, .integer, .min(18)) } if let errorResponse = result.errorResponse() { return errorResponse // 422 with validation errors } // Data is valid, proceed let email = request.formData["email"]! return .json(["registered": email])}