Swift 방식 웹 프레임워크 Vapor의 Dropet는 무엇입니까?
이른바 Vapor
Vapor는 Swift 방식의 웹 프레임워크입니다.
공식 링크: https://vapor.codes/
보관소: https://github.com/vapor/vapor
저는 Dropet이라는 녀석이 마음에 들어요.
전혀 접해보지 않은 상태에서 advent 달력에 초대받은 것이기 때문에 문서를 먼저 보면 Dropet이라는 단어가 나오기 때문에 찾아봤어요.
단순히 영어의 뜻을 몰라서 찾아봤는데
Dropet: 방울(물방울)
라는 뜻이다.Vapor(스팀)을 구성하는 요소라 드롭=방울을 만드는 거죠...?선생✨
Dropet은 서비스 컨테이너입니다.
공식 문서에서 Dropet은 서비스 용기에서 루트, 서버 시작, 중간부품의 추가 등을 책임진다고 적혀 있다.
The Droplet is a service container that gives you access to many of Vapor's facilities. It is responsible for registering routes, starting the server, appending middleware, and more.
(역시 Vaper(스팀) 그래서 방울로 되어있어요.
사용법
다음은 구체적인 용례와 함께 Dropet의 구조를 이해할 것이다.
(코드는 공식 문서를 직접 사용했다
초기화
main.swift
import Vapor
let drop = try Droplet()
// 何かしらの設定
try drop.run()
단순히 Vapor를 이용하고 싶을 뿐이라면 그것만으로도 OK.환경별로 설정하고 싶어요.
main.swift
if drop.config.environment == .production {
...
}
위에서 말한 바와 같이 환경에 따라 개발자먼트,testing,production 등 다양한 부분을 설명할 수 있다.또한 환경 변수를 다음과 같이 전환하여 시작할 수 있습니다.(기본값은 development)
vapor run serve --env=production
환경별로 로그를 내고 싶어요.
예를 들어 정식 전송 중 오류가 발생한 경우에만 혼자의logger를 이용하려고 할 때 다음과 같이 코드를 기술한다
main.swift
let config = try Config()
config.addConfigurable(log: MyEmailLogger.init, name: "email")
let drop = Droplet(config)
정식 공연의 드롭렛.jsonConfig/production/droplet.json
에서 다음과 같이 설정합니다.{
"log": "email"
}
일지 이외에 생각하다서버와 cipher 등도 설정할 수 있습니다.각 환경에 대해 서버의 포트 번호 등을 설정하고 싶습니다.
다음과 같이
config["jsonファイル名", "プロパティ名"]
에서 설정치를 추출할 수 있습니다.main.swift
final class MyServer: ServerProtocol {
let host: String
let port: Int
init(_ host: String, _ port: Int) {
self.host = host
self.port = port
}
}
extension MyServer: ConfigInitializable {
convenience init(config: Config) throws {
// config["jsonファイル名", "プロパティ名"] で値を取り出せる
let host = config["server", "host"]?.string ?? "127.0.0.1"
let port = config["server", "port"]?.int ?? 8080
self.init(host, port)
}
}
그리고 각 환경에 따라 다음과 같은 json 파일을 준비하면 설정이 자동으로 전환됩니다.Config/production/server.json
{
"host": "0.0.0.0",
"port": 8080
}
Config/development/server.json{
"host": "127.0.0.1",
"port": 9000
}
MySQL 사용 시 실제 설정
최초로
MySQLProvider
의 물건을 제공하였다.(사전 준비가 필요하다하지만 생략)다음과 같이 기술하다.
main.swift
import Vapor
import MySQLProvider
let config = try Config()
try config.addProvider(MySQLProvider.Provider.self)
let drop = try Droplet(config)
...
flument(swift 같은 ORM)와 MySQL 관계의 설정 json만 준비하면 OK!Config/fluent.json
{
"driver": "mysql"
}
Config/mysql.json{
"hostname": "127.0.0.1",
"user": "root",
"password": "password",
"database": "hello"
}
앞에서 기재한 바와 같이 모든 설정은 내부에서 json을 읽어서 설정한 것이므로 반드시 이렇다.그렇구나, 잘했어...
총결산
Reference
이 문제에 관하여(Swift 방식 웹 프레임워크 Vapor의 Dropet는 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Ryo-chin/items/ca290062acfc454548c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)