0Pricing
Scala for Backend Engineering & Functional Programming · 강의

Play로 RESTful API 구축

Play 컨트롤러로 RESTful 엔드포인트를 설계하고 구현하며 요청을 처리하고 JSON 데이터를 관리합니다.

Play로 RESTful API 구축은(는) CoddyKit의 무료 Scala for Backend Engineering & Functional Programming 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Scala for Backend Engineering & Functional Programming 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Scala for Backend Engineering & Functional Programming 강의에는 총 3개의 강의가 포함되어 있습니다.

Play REST API 소개

환영합니다! 이번 레슨에서는 스칼라 Play 프레임워크를 사용하여 RESTful API를 구축하는 방법을 살펴봅니다. REST(표현 상태 전송)는 네트워크 애플리케이션을 설계하는 데 널리 사용되는 아키텍처 스타일입니다.

RESTful API를 사용하면 서로 다른 소프트웨어 시스템이 인터넷을 통해 통신할 수 있습니다. 일반적으로 GET, POST, PUT, DELETE와 같은 표준 HTTP 메서드를 사용하여 리소스에 대한 작업을 수행합니다.

Play 컨트롤러 및 작업

Play에서는 들어오는 HTTP 요청을 컨트롤러가 처리합니다. 컨트롤러는 작업 메서드를 포함하는 스칼라 객체 또는 클래스입니다.

각 작업 메서드는 특정 유형의 요청(예: 데이터 가져오기, 새 항목 만들기)을 처리하고 HTTP 응답을 반환합니다.

Play에서 경로 정의하기

Play는 conf/routes 파일을 사용하여 들어오는 HTTP 요청을 특정 컨트롤러 작업 메서드에 매핑합니다. 이곳에서 API의 엔드포인트를 정의합니다.

경로 항목의 기본 구문은 다음과 같습니다. HTTP_METHOD /path controllers.ControllerName.actionMethod(parameters)

GET 엔드포인트 구현하기

인사말을 반환하는 간단한 GET 엔드포인트를 만들어 보겠습니다. 실제 Play 앱에서는 이 코드가 컨트롤러 안에 있어야 합니다. 여기서는 main 메서드에서 로직을 시뮬레이션합니다.

다음 예시를 실행해 보십시오.

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

경로 매개변수 추출하기

항목 ID와 같이 URL 경로에서 동적인 값을 추출해야 하는 경우가 많습니다. 이러한 값을 경로 매개변수라고 합니다.

routes 파일에서는 콜론(:)을 사용하여 경로 매개변수를 정의합니다. 컨트롤러 작업에서는 이를 메서드 매개변수로 선언합니다.

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

요청 본문 및 JSON

리소스를 만들거나 업데이트할 때 클라이언트는 요청 본문에 데이터를 담아 보냅니다. RESTful API에서 이 데이터는 거의 항상 JSON(자바스크립트 객체 표기법) 형식입니다.

Play는 JSON 요청 본문을 구문 분석하고 이를 스칼라 케이스 클래스로 변환하는 기능을 훌륭하게 지원합니다.

POST 엔드포인트 구축하기

JSON 본문을 받는 POST 엔드포인트를 시뮬레이션해 보겠습니다. 실제 Play 앱에서는 Play의 JSON 라이브러리를 사용하여 요청을 구문 분석합니다. 이 실행 가능한 예시에서는 간단한 문자열 콘텐츠를 확인합니다.

다음 예시를 실행해 보십시오.

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 및 DELETE 처리하기

GET과 POST 외에도 RESTful API에서는 일반적으로 다음 메서드를 사용합니다.

  • PUT: 기존 리소스를 업데이트합니다. 일반적으로 경로 매개변수(ID)와 요청 본문(업데이트된 데이터)이 필요합니다.
  • DELETE: 리소스를 삭제합니다. 일반적으로 경로 매개변수(ID)만 필요합니다.

PUT과 DELETE에서 경로를 정의하고 매개변수 및 본문에 접근하는 방식은 POST와 GET의 방식과 비슷합니다.

JSON 응답 반환하기

요청을 처리한 후 API는 일반적으로 JSON 형식의 응답을 보내야 합니다. Play를 사용하면 JSON 객체를 쉽게 만들고 이를 반환할 수 있습니다.

컨트롤러에서는 일반적으로 Ok(Json.toJson(yourCaseClass))를 사용합니다. 여기서는 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)}")
  }
}

경로 매칭 퀴즈

GET /api/products/123 요청과 올바르게 일치하고 123을 Int로 컨트롤러 동작에 전달하는 Play 경로 정의는 무엇입니까?

복습 및 다음 단계

훌륭합니다! Play Framework로 RESTful API를 구축하는 기초를 학습하셨습니다.

  • RESTful 원칙과 HTTP 메서드의 이해
  • Play 컨트롤러와 동작이 요청을 처리하는 방식
  • URL을 컨트롤러 동작에 매핑하는 API 경로 정의
  • URL에서 경로 매개변수 추출
  • POST/PUT의 JSON 요청 본문 처리
  • JSON 응답 구성 및 반환

다음으로 Play 애플리케이션에 데이터베이스를 통합하는 방법을 살펴보시면 좋습니다!

자주 묻는 질문

“Play로 RESTful API 구축” 강의는 무료인가요?

네 — “Play로 RESTful API 구축” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Scala for Backend Engineering & Functional Programming 강의 전체를 잠금 해제할 수 있습니다. Scala for Backend Engineering & Functional Programming 강의에는 총 3개의 강의가 포함되어 있습니다.

“Play로 RESTful API 구축”에서 뭘 배우나요?

Play 컨트롤러로 RESTful 엔드포인트를 설계하고 구현하며 요청을 처리하고 JSON 데이터를 관리합니다. 브라우저에서 직접 실행하는 실습 코드로 Scala for Backend Engineering & Functional Programming을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Scala for Backend Engineering & Functional Programming을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Scala for Backend Engineering & Functional Programming은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.

“Play로 RESTful API 구축” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Scala for Backend Engineering & Functional Programming 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Scala for Backend Engineering & Functional Programming 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Play 프레임워크 기초
  2. Play로 RESTful API 구축
  3. Slick/Doobie를 활용한 데이터베이스 통합
← Scala for Backend Engineering & Functional Programming(으)로 돌아가기