0Pricing
Scala for Backend Engineering & Functional Programming · Pelajaran

Membangun API RESTful dengan Play

Rancang dan terapkan titik akhir RESTful, tangani permintaan, dan kelola data JSON dengan pengendali Play.

Membangun API RESTful dengan Play adalah pelajaran Scala for Backend Engineering & Functional Programming gratis di CoddyKit. Ini adalah pelajaran 2 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Scala for Backend Engineering & Functional Programming, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Scala for Backend Engineering & Functional Programming mencakup 3 pelajaran total.

Pengantar API REST Play

Selamat datang! Dalam pelajaran ini, kita akan mendalami cara membangun API RESTful menggunakan Play Framework Scala. REST (Representational State Transfer) adalah gaya arsitektur yang banyak digunakan untuk merancang aplikasi berjaringan.

API RESTful memungkinkan berbagai sistem perangkat lunak berkomunikasi satu sama lain melalui internet, biasanya dengan menggunakan method HTTP standar seperti GET, POST, PUT, dan DELETE untuk menjalankan operasi pada sumber daya.

Controller dan Action Play

Di Play, permintaan HTTP masuk ditangani oleh controller. Controller adalah objek atau class Scala yang berisi method action.

Setiap method action bertanggung jawab memproses jenis permintaan tertentu (misalnya, mengambil data atau membuat item baru) dan mengembalikan respons HTTP.

Mendefinisikan Rute di Play

Play menggunakan file conf/routes untuk memetakan permintaan HTTP masuk ke method action controller tertentu. Di sinilah Anda mendefinisikan endpoint API.

Sintaks dasar entri rute adalah: HTTP_METHOD /path controllers.ControllerName.actionMethod(parameters).

Menerapkan Endpoint GET

Mari kita buat endpoint GET sederhana yang mengembalikan sapaan. Dalam aplikasi Play nyata, kode ini akan berada di dalam controller. Di sini, kita menyimulasikan logikanya dalam method main.

Cobalah menjalankan contoh ini:

object GreetingController {
  // This method simulates a Play controller action
  def sayHello(): String = {
    "Hello from your Play API!"
  }
  
  def main(args: Array[String]): Unit = {
    // Simulate receiving a request and calling the action
    val apiResponse = sayHello()
    println(s"Simulated API Response: $apiResponse")
  }
}

Mengambil Parameter Path

Sering kali, Anda perlu mengambil nilai dinamis dari path URL, seperti ID item. Nilai ini disebut parameter path.

Di file routes, Anda mendefinisikannya dengan titik dua (:). Dalam action controller, Anda mendeklarasikannya sebagai parameter method.

object UserController {
  // This action takes an 'id' as a path parameter
  def getUser(id: Int): String = {
    s"Fetching user details for ID: $id"
  }
  
  def main(args: Array[String]): Unit = {
    // Simulate a request to /users/123
    val userIdFromRequest = 123
    val apiResponse = getUser(userIdFromRequest)
    println(s"Simulated API Response: $apiResponse")
  }
}

Body Permintaan dan JSON

Untuk membuat atau memperbarui sumber daya, klien mengirimkan data dalam body permintaan. Untuk API RESTful, data ini hampir selalu berformat JSON (JavaScript Object Notation).

Play menyediakan dukungan yang sangat baik untuk mengurai body permintaan JSON dan mengubahnya menjadi case class Scala.

Membangun Endpoint POST

Mari kita simulasikan endpoint POST yang menerima body JSON. Dalam aplikasi Play nyata, Anda akan menggunakan pustaka JSON Play untuk mengurai permintaan. Untuk contoh yang dapat dijalankan ini, kita akan memeriksa konten string sederhana.

Cobalah menjalankan contoh ini:

object ItemController {
  // Simulate processing a JSON request body
  def createItem(jsonBody: String): String = {
    // In a real Play app: Json.parse(jsonBody).as[ItemCaseClass]
    if (jsonBody.contains("name") && jsonBody.contains("price")) {
      s"Item successfully created! Data: $jsonBody"
    } else {
      "Error: Invalid JSON format. 'name' and 'price' expected."
    }
  }
  
  def main(args: Array[String]): Unit = {
    // Simulate a POST request with a JSON body
    val validJson = """{"name": "Smartphone", "price": 799.99}"""
    println(s"Valid JSON Response: ${createItem(validJson)}")
    
    val invalidJson = """{"product": "Tablet"}"""
    println(s"Invalid JSON Response: ${createItem(invalidJson)}")
  }
}

Menangani PUT dan DELETE

Selain GET dan POST, API RESTful biasanya menggunakan:

  • PUT: Untuk memperbarui sumber daya yang sudah ada. Biasanya memerlukan parameter path (ID) dan body permintaan (data yang diperbarui).
  • DELETE: Untuk menghapus sumber daya. Biasanya hanya memerlukan parameter path (ID).

Pola untuk mendefinisikan rute dan mengakses parameter/body pada PUT dan DELETE serupa dengan POST dan GET.

Mengembalikan Respons JSON

Setelah memproses permintaan, API Anda biasanya perlu mengirimkan kembali respons, sering kali dalam format JSON. Play memudahkan Anda membuat objek JSON dan mengirimkannya kembali.

Di dalam controller, biasanya Anda akan menggunakan Ok(Json.toJson(yourCaseClass)). Di sini, kita menyimulasikan pembuatan string JSON.

object ResponseGenerator {
  // Simulate a case class for the response data
  case class ApiResponse(status: String, message: String)

  // Simulate converting the case class to a JSON string
  def buildJsonResponse(response: ApiResponse): String = {
    s"""{"status": "${response.status}", "message": "${response.message}"}"""
  }

  def main(args: Array[String]): Unit = {
    val successResponse = ApiResponse("success", "Data retrieved successfully")
    println(s"Simulated JSON Output:\n${buildJsonResponse(successResponse)}")

    val errorResponse = ApiResponse("error", "Item not found")
    println(s"Simulated JSON Output:\n${buildJsonResponse(errorResponse)}")
  }
}

Kuis Pencocokan Rute

Definisi rute Play manakah yang akan mencocokkan permintaan GET /api/products/123 dengan benar dan meneruskan 123 sebagai Int ke aksi controller?

Ringkasan & Langkah Berikutnya

Kerja bagus! Anda telah mempelajari dasar-dasar pembuatan API RESTful dengan Play Framework:

  • Memahami prinsip RESTful dan metode HTTP.
  • Memahami cara controller dan aksi Play memproses permintaan.
  • Mendefinisikan rute API untuk memetakan URL ke aksi controller.
  • Mengekstrak parameter jalur dari URL.
  • Menangani badan permintaan JSON untuk POST/PUT.
  • Menyusun dan mengembalikan respons JSON.

Selanjutnya, Anda dapat mempelajari integrasi basis data dengan aplikasi Play Anda!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membangun API RESTful dengan Play” gratis?

Ya — teks lengkap “Membangun API RESTful dengan Play” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Scala for Backend Engineering & Functional Programming, upgrade ke CoddyKit PRO. Kursus Scala for Backend Engineering & Functional Programming mencakup 3 pelajaran total.

Apa yang akan aku pelajari di “Membangun API RESTful dengan Play”?

Rancang dan terapkan titik akhir RESTful, tangani permintaan, dan kelola data JSON dengan pengendali Play. Kamu berlatih Scala for Backend Engineering & Functional Programming dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Scala for Backend Engineering & Functional Programming?

Tidak diperlukan pengalaman sebelumnya. Scala for Backend Engineering & Functional Programming di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 3.

Berapa lama pelajaran “Membangun API RESTful dengan Play” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Scala for Backend Engineering & Functional Programming ini?

Ya. Setiap pelajaran Scala for Backend Engineering & Functional Programming menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar Play Framework
  2. Membangun API RESTful dengan Play
  3. Integrasi Basis Data dengan Slick/Doobie
← Kembali ke Scala for Backend Engineering & Functional Programming