Study
Play Framework

Request & Response (Parsing Body, Header)

Penjelasan

Setiap `Action` yang menerima parameter `request: Request[AnyContent]` bisa mengakses berbagai bagian dari HTTP request: `request.headers.get("nama-header")` untuk header, `request.queryString` atau helper `getQueryString` untuk query parameter di URL, dan `request.body` untuk isi body request. Tipe body ditentukan lewat body parser — default `AnyContent` bisa diubah jadi bentuk lebih spesifik seperti `parse.json` atau `parse.text`. Untuk response, selain status code (Ok, BadRequest, dst), header response tambahan bisa disisipkan lewat `.withHeaders(...)`, dan cookie lewat `.withCookies(...)`. Play juga otomatis menangani content negotiation dasar berdasarkan header Accept saat memungkinkan.

Contoh Konsep

import play.api.mvc._

def infoRequest(): Action[AnyContent] = Action { request =>
  val userAgent = request.headers.get("User-Agent").getOrElse("tidak diketahui")
  val halaman = request.getQueryString("halaman").getOrElse("1")

  Ok(s"User-Agent: $userAgent, Halaman: $halaman")
    .withHeaders("X-Custom-Header" -> "nilai-custom")
}

Praktikum

Buat Action yang membaca query parameter "cari" dari URL dan mengembalikan pesan "Mencari: <nilai>" atau "Tidak ada kata kunci" jika parameter tidak ada.

Editor Latihan

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

Tips

Gunakan getOrElse saat membaca header atau query string opsional — jangan asumsikan sebuah header/parameter selalu ada, karena request.headers.get dan getQueryString mengembalikan Option.