Study
Vapor

Request & Response

Penjelasan

Setiap route handler di Vapor menerima parameter Request (biasa ditulis req) yang membawa semua informasi permintaan masuk: header, query string, path parameter, body, bahkan koneksi database lewat req.db. Handler bisa mengembalikan berbagai tipe yang conform ke ResponseEncodable — String, struct Codable, atau eksplisit objek Response. Untuk kontrol penuh atas response (status code kustom, header tambahan, body mentah), kamu bisa membuat Response secara manual: Response(status: .ok, body: .init(string: "...")). Query string diakses lewat req.query, misalnya req.query[String.self, at: "cari"] untuk membaca ?cari=nilai dari URL.

Contoh Konsep

import Vapor

func routes(_ app: Application) throws {
    app.get("cari") { req -> String in
        let kataKunci = req.query[String.self, at: "q"] ?? "(kosong)"
        return "Mencari: \(kataKunci)"
    }

    app.get("status-kustom") { req -> Response in
        let response = Response(status: .accepted)
        response.body = .init(string: "Diterima dan sedang diproses")
        return response
    }
}

Praktikum

Buat route app.get("halo-query") yang membaca query parameter "nama" (default "Tamu" kalau tidak ada) dan mengembalikan String "Halo, <nama>".

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Untuk sebagian besar kasus, kamu tidak perlu membuat Response manual — cukup return struct Codable dan Vapor otomatis mengonversinya jadi JSON dengan status 200. Response manual baru dibutuhkan saat butuh status code atau header non-standar.