0Pricing
Scala for Backend Engineering & Functional Programming · Ders

Play ile RESTful API Oluşturma

RESTful uç noktaları tasarlayıp uygulayın, istekleri işleyin ve Play denetleyicileriyle JSON verilerini yönetin.

Play ile RESTful API Oluşturma, CoddyKit'te ücretsiz bir Scala for Backend Engineering & Functional Programming dersidir. Bu, 3 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Scala for Backend Engineering & Functional Programming öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Scala for Backend Engineering & Functional Programming kursu toplamda 3 dersten oluşur.

Play REST API'lerine Giriş

Hoş geldiniz! Bu derste Scala Play çatısını kullanarak RESTful API'ler oluşturmaya giriş yapacağız. REST (Temsili Durum Aktarımı), ağa bağlı uygulamalar tasarlamak için yaygın olarak kullanılan bir mimari tarzdır.

RESTful API, farklı yazılım sistemlerinin internet üzerinden birbiriyle iletişim kurmasını sağlar. Bu iletişimde genellikle kaynaklar üzerinde işlem yapmak için GET, POST, PUT ve DELETE gibi standart HTTP yöntemleri kullanılır.

Play Denetleyicileri ve Eylemleri

Play'de gelen HTTP istekleri denetleyiciler tarafından işlenir. Denetleyici, eylem yöntemleri içeren bir Scala nesnesi veya sınıfıdır.

Her eylem yöntemi, belirli bir istek türünü (örneğin veri getirme veya yeni bir öğe oluşturma) işlemekten ve bir HTTP yanıtı döndürmekten sorumludur.

Play'de Yolları Tanımlama

Play, gelen HTTP isteklerini belirli denetleyici eylem yöntemleriyle eşlemek için bir conf/routes dosyası kullanır. API uç noktalarınızı burada tanımlarsınız.

Bir yol girdisinin temel söz dizimi şöyledir: HTTP_METHOD /path controllers.ControllerName.actionMethod(parameters).

GET Uç Noktası Uygulama

Bir selamlaşma döndüren basit bir GET uç noktası oluşturalım. Gerçek bir Play uygulamasında bu kod bir denetleyicinin içinde olurdu. Burada mantığı bir main yöntemiyle benzetiyoruz.

Bu örneği çalıştırmayı deneyin:

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")
  }
}

Yol Parametrelerini Çıkarma

Çoğu zaman URL yolundan öğe kimliği gibi dinamik değerleri çıkarmanız gerekir. Bunlara yol parametreleri denir.

routes dosyasında bunları iki nokta üst üste işaretiyle (:) tanımlarsınız. Denetleyici eyleminizde ise bunları yöntem parametreleri olarak bildirirsiniz.

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")
  }
}

İstek Gövdeleri ve JSON

Kaynak oluşturmak veya güncellemek için istemciler verileri istek gövdesinde gönderir. RESTful API'lerde bu veriler neredeyse her zaman JSON (JavaScript Nesne Gösterimi) biçimindedir.

Play, JSON istek gövdelerini ayrıştırmak ve bunları Scala durum sınıflarına dönüştürmek için kapsamlı destek sunar.

POST Uç Noktası Oluşturma

Bir JSON gövdesi alan POST uç noktasını benzetelim. Gerçek bir Play uygulamasında isteği ayrıştırmak için Play'in JSON kütüphanesini kullanırdınız. Bu çalıştırılabilir örnekte ise basit dize içeriğini kontrol edeceğiz.

Bu örneği çalıştırmayı deneyin:

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)}")
  }
}

PUT ve DELETE İşlemlerini Ele Alma

GET ve POST'un yanı sıra RESTful API'lerde yaygın olarak şunlar kullanılır:

  • PUT: Mevcut bir kaynağı güncellemek için kullanılır. Genellikle bir yol parametresi (ID) ve bir istek gövdesi (güncellenmiş veriler) gerektirir.
  • DELETE: Bir kaynağı kaldırmak için kullanılır. Genellikle yalnızca bir yol parametresi (ID) gerektirir.

PUT ve DELETE için yolları tanımlama ve parametrelere/gövdelere erişme kalıpları POST ve GET ile benzerdir.

JSON Yanıtları Döndürme

Bir isteği işledikten sonra API'nizin genellikle çoğunlukla JSON biçiminde bir yanıt göndermesi gerekir. Play, JSON nesneleri oluşturmayı ve bunları geri göndermeyi kolaylaştırır.

Bir denetleyicide genellikle Ok(Json.toJson(yourCaseClass)) kullanırsınız. Burada bir JSON dizesi oluşturmayı benzetiyoruz.

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)}")
  }
}

Yol Eşleştirme Sınavı

GET /api/products/123 isteğiyle doğru şekilde eşleşen ve 123 değerini bir Int olarak denetleyici eylemine aktaran Play yol tanımı hangisidir?

Özet ve Sonraki Adımlar

Tebrikler! Play çatısıyla RESTful API oluşturmanın temellerini öğrendiniz:

  • RESTful ilkelerini ve HTTP yöntemlerini anlama.
  • Play denetleyicilerinin ve eylemlerinin istekleri nasıl işlediği.
  • URL'leri denetleyici eylemleriyle eşlemek için API yollarını tanımlama.
  • URL'lerden yol parametrelerini çıkarma.
  • POST/PUT için JSON istek gövdelerini işleme.
  • JSON yanıtlarını oluşturma ve döndürme.

Sırada veritabanlarını Play uygulamanızla tümleştirmeyi keşfedebilirsiniz!

Sıkça Sorulan Sorular

“Play ile RESTful API Oluşturma” dersi ücretsiz mi?

Evet — “Play ile RESTful API Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Scala for Backend Engineering & Functional Programming kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Scala for Backend Engineering & Functional Programming kursu toplamda 3 dersten oluşur.

“Play ile RESTful API Oluşturma” dersinde ne öğreneceğim?

RESTful uç noktaları tasarlayıp uygulayın, istekleri işleyin ve Play denetleyicileriyle JSON verilerini yönetin. Scala for Backend Engineering & Functional Programming ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Scala for Backend Engineering & Functional Programming öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Scala for Backend Engineering & Functional Programming, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 3 dersinin 2. dersidir.

“Play ile RESTful API Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Scala for Backend Engineering & Functional Programming dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Scala for Backend Engineering & Functional Programming dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Play Framework Temelleri
  2. Play ile RESTful API Oluşturma
  3. Slick/Doobie ile Veritabanı Entegrasyonu
← Scala for Backend Engineering & Functional Programming Sayfasına Dön