Tworzenie API RESTful za pomocą Play
Projektuj i implementuj endpointy RESTful, obsługuj żądania i zarządzaj danymi JSON za pomocą kontrolerów Play.
Tworzenie API RESTful za pomocą Play to bezpłatna lekcja Scala for Backend Engineering & Functional Programming na CoddyKit. To lekcja 2 z 3. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Scala for Backend Engineering & Functional Programming, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Scala for Backend Engineering & Functional Programming zawiera 3 lekcji w sumie.
Wprowadzenie do interfejsów API REST Play
Witamy! W tej lekcji zajmiemy się tworzeniem interfejsów API RESTful za pomocą frameworka Scala Play. REST (Representational State Transfer) to powszechnie stosowany styl architektoniczny do projektowania aplikacji sieciowych.
Interfejs API RESTful umożliwia różnym systemom oprogramowania komunikowanie się przez internet, zazwyczaj za pomocą standardowych metod HTTP, takich jak GET, POST, PUT i DELETE, do wykonywania operacji na zasobach.
Kontrolery i akcje Play
W Play przychodzące żądania HTTP są obsługiwane przez kontrolery. Kontroler to obiekt lub klasa Scala zawierająca metody akcji.
Każda metoda akcji odpowiada za przetworzenie określonego rodzaju żądania (np. pobranie danych lub utworzenie nowego elementu) i zwrócenie odpowiedzi HTTP.
Definiowanie tras w Play
Play używa pliku conf/routes do mapowania przychodzących żądań HTTP na konkretne metody akcji kontrolerów. W tym miejscu definiuje się punkty końcowe interfejsu API.
Podstawowa składnia wpisu trasy to: HTTP_METHOD /path controllers.ControllerName.actionMethod(parameters).
Implementowanie punktu końcowego GET
Utwórzmy prosty punkt końcowy GET, który zwraca powitanie. W prawdziwej aplikacji Play znajdowałby się on wewnątrz kontrolera. Tutaj zasymulujemy tę logikę w metodzie main.
Spróbuj uruchomić ten przykład:
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")
}
}Pobieranie parametrów ścieżki
Często trzeba pobrać z adresu URL dynamiczne wartości, takie jak identyfikator elementu. Nazywa się je parametrami ścieżki.
W pliku routes definiuje się je za pomocą dwukropka (:). W akcji kontrolera deklaruje się je jako parametry metody.
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")
}
}Treści żądań i JSON
Podczas tworzenia lub aktualizowania zasobów klienci wysyłają dane w treści żądania. W przypadku interfejsów API RESTful dane te niemal zawsze mają format JSON (JavaScript Object Notation).
Play zapewnia doskonałą obsługę analizowania treści żądań JSON i konwertowania ich na klasy przypadków Scala.
Budowanie punktu końcowego POST
Zasymulujmy punkt końcowy POST, który odbiera treść w formacie JSON. W prawdziwej aplikacji Play do analizowania żądania używa się biblioteki JSON Play. W tym uruchamialnym przykładzie sprawdzimy prostą zawartość tekstową.
Spróbuj uruchomić ten przykład:
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)}")
}
}Obsługa PUT i DELETE
Oprócz GET i POST interfejsy API RESTful często używają:
- PUT: do aktualizowania istniejącego zasobu. Zwykle wymaga parametru ścieżki (identyfikatora) oraz treści żądania (zaktualizowanych danych).
- DELETE: do usuwania zasobu. Zazwyczaj wymaga tylko parametru ścieżki (identyfikatora).
Sposoby definiowania tras oraz uzyskiwania dostępu do parametrów i treści żądań dla PUT i DELETE są podobne jak w przypadku POST i GET.
Zwracanie odpowiedzi JSON
Po przetworzeniu żądania interfejs API zwykle musi odesłać odpowiedź, często w formacie JSON. Play ułatwia tworzenie obiektów JSON i odsyłanie ich.
W kontrolerze zazwyczaj używa się Ok(Json.toJson(yourCaseClass)). Tutaj zasymulujemy utworzenie tekstu 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)}")
}
}Quiz: dopasowywanie tras
Która definicja trasy Play prawidłowo dopasuje żądanie GET /api/products/123 i przekaże 123 jako Int do akcji kontrolera?
Podsumowanie i kolejne kroki
Świetna praca! Opanowali Państwo podstawy tworzenia interfejsów API RESTful za pomocą Play Framework:
- Zrozumienie zasad RESTful i metod HTTP.
- Sposób, w jaki kontrolery i akcje Play przetwarzają żądania.
- Definiowanie tras API mapujących adresy URL na akcje kontrolerów.
- Wyodrębnianie parametrów ścieżki z adresów URL.
- Obsługa treści żądań JSON dla POST/PUT.
- Konstruowanie i zwracanie odpowiedzi JSON.
W kolejnym kroku mogą Państwo poznać sposób integrowania baz danych z aplikacją Play!
Ucz się Scala dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 39
- Lekcje
- 143
Często zadawane pytania
Czy lekcja „Tworzenie API RESTful za pomocą Play” jest bezpłatna?
Tak — pełny tekst „Tworzenie API RESTful za pomocą Play” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Scala for Backend Engineering & Functional Programming, przejdź na CoddyKit PRO. Kurs Scala for Backend Engineering & Functional Programming zawiera 3 lekcji w sumie.
Co nauczysz się w „Tworzenie API RESTful za pomocą Play”?
Projektuj i implementuj endpointy RESTful, obsługuj żądania i zarządzaj danymi JSON za pomocą kontrolerów Play. Ćwiczysz Scala for Backend Engineering & Functional Programming z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Scala for Backend Engineering & Functional Programming?
Nie wymagamy żadnego doświadczenia. Scala for Backend Engineering & Functional Programming w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 3.
Ile czasu zajmuje lekcja „Tworzenie API RESTful za pomocą Play”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Scala for Backend Engineering & Functional Programming?
Tak. Każda lekcja Scala for Backend Engineering & Functional Programming zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Podstawy Play Framework
- Tworzenie API RESTful za pomocą Play
- Integracja z bazą danych za pomocą Slick/Doobie