YunDaeHyeon
← Lab

Vapor 시작하기

스터디2025.06.27
  • Swift
  • Xcode
  • Codable
  • Vapor

Vapor란?

Vapor 문서

  • Vapor는 Swift로 작성된 오픈 소스 웹 프레임워크
  • API, 웹사이트, 클라우드, 백엔드 서버를 쉽게 만들 수 있도록 도와줌.

→ Swift를 사용해 서버 및 RESTful API, 웹 앱과 같은 다양한 서버 측 기능 구현이 가능하다!

Vapor의 특징

  1. Swift 개발자를 위해 설계되어 있어 iOS 개발자가 익숙한 문법과 환경(예: Xcode 디버깅)을 그대로 사용하며 서버도 개발할 수 있다.
  2. 비동기 이벤트 기반 기술(Apple의 SwiftNIO)을 활용해 성능이 뛰어나고 현대적인 웹 개발 패러다임을 지원한다.
  3. 다양한 샘플 프로젝트와 공식 문서가 존재하고 커뮤니티가 활발하게 발전 중이다.

🤔 SwiftNIO란?

[번역] SwiftNIO Readme Conceptual Overview

📌 위 블로그 정리본
  • SwiftNIO는 유지 관리 가능한 고성능 프로토콜 서버 및 클라이언트의 신속한 개발을 위한 크로스 플랫폼, 이벤트 드리븐, 네트워크 애플리케이션 프레임워크
  • 기본적으로 Swift에서 고성능 네트워킹 어플리케이션을 구축하기 위한 도구
  • SwiftNIO는 non-blocking-I/O를 광범위하게 사용한다.
  • SwiftNIO의 기본 아키텍처(기본 빌딩 블록은 8가지의 타입 객체)
  • EventLoopGroup: 프로토콜
  • EventLoop: 프로토콜
  • Channel: 프로토콜
  • ChannelHandler: 프로토콜
  • Bootstrap: 몇가지 연관된 구조체
  • ByteBuffer: 구조체
  • EventLoopFuture: 제네릭 클래스
  • EventLoopPromise: 제네릭 구조체
---

Vapor 설치 및 실행하기

# 2025년 11월 9일 기준
swift --version
# swift-driver version: 1.115.1 
# Apple Swift version 6.0.3 (swiftlang-6.0.3.1.10 clang-1600.0.30.1)

# brew로 vapor 설치
brew install vapor

vapor --version
# toolbox: 19.2.0

# 프로젝트 생성 (-n 옵션 추가 시 프로젝트 생성 시 옵션 미적용으로 즉시 base born 프로젝트 생성)
vapor new vaporStudy -n

cd vaporStudy
code . # VSCode로 열기
open Package.swift # Xcode로 열기

프로젝트 생성 시 추가되는 기본 템플릿


Vapor Routing + JSON Response

Vapor - Routing + JSON Response

Vapor 로그인 구현 예제

Vapor - 로그인 구현하기

Fluent란?

[Vapor] Swift로 서버 만들기 04 - Fluent 설치 및 개념 (Models, Field, Timestamp, Migration 등)

swift - Vapor, Fluent란? — happyytw

  • Vapor에서 Fluent는 Swift의 ORM(Object Relational Mapping) 프레임워크
  • Swift 객체와 관계형 데이터베이스의 테이블 구조를 자동으로 매핑해 주어 Swift 코드로 데이터베이스를 쉽게 다룰 수 있게 한다.
  • Fluent를 사용하면 데이터베이스의 구조를 나타내는 모델을 Swift 클래스 형태로 정의할 수 있고, 이를 통해 CRUD(생성, 조회, 수정, 삭제) 작업을 SQL 문법 없이 Swift 코드로 수행할 수 있다.

→ ⭐ 이게 바로 ORM!

Fluent의 주요 특징

  • 모델은 데이터베이스의 테이블과 대응하며, Codable을 준수하는 여러 필드를 가진다.
  • 각 모델은 고유한 식별자(ID)를 가지며, @ID 프로퍼티 래퍼를 사용해 정의한다.
  • 필드는 @Field와 같은 프로퍼티 래퍼로 표시하며, 데이터베이스 컬럼과 매핑된다.
  • 자동으로 UUID 식별자를 생성하고 관리한다.
  • 마이그레이션을 통해 데이터베이스 스키마를 업데이트한다.
  • Vapor 프로젝트 생성 시 Fluent 사용 여부를 선택하여 패키지 의존성을 자동 추가할 수 있으며 PostgreSQL, MySQL, SQLite, MongoDB 등 여러 데이터베이스를 지원한다.

→ ⭐ Fluent는 Vapor 서버 애플리케이션에서 데이터베이스를 손쉽게 다루기 위한 Swift 친화적인 ORM 솔루션!