Vapor 설명서 10: Provider

2896 단어
Provider 프로토콜은 Vapor 프로젝트에 기능과 제3자 Package를 추가하는 데 간단하고 예측 가능한 방법을 제공합니다.
Adding a Provider
provider를 추가하려면 2~3단계가 필요합니다: Add Package, Import, Config(선택).
Add Package
Vapor의provider는 모두 -provider 로 끝납니다. GitHub에서 지원하는 모든Provider를 검색할 수 있습니다.프로그램에 provider를 추가하려면 Package.swift 파일에 의존 라이브러리로 추가해야 합니다.
let package = Package(
    name: "MyApp",
    dependencies: [
        .Package(url: "https://github.com/vapor/vapor.git", majorVersion: 1, minor: 0),
        .Package(url: "https://github.com/vapor/mysql-provider.git", majorVersion: 1, minor: 0)
    ]
)

새 패키지를 추가하려면 vapor clean 또는 vapor build --clean를 사용해야 합니다.
Import
provider가 추가되면 import VaporFoo로 도입할 수 있습니다. Foo가provider의 이름입니다.
예를 들어 MYSQL provider 도입:
import Vapor
import VaporMySQL

let drop = Droplet()

try drop.addProvider(VaporMySQL.Provider.self)

// ...

drop.run()

모든provider에는 Provider클래스가 있는데 Dropletinit방법에서 이 클래스의 유형을 providers수조에 추가합니다.
Config
일부 provider가 설정해야 합니다. 예를 들어 VaporMySQL 파일이 필요합니다. 내용은 다음과 같습니다.
{
    "host": "localhost",
    "user": "root",
    "password": "",
    "database": "vapor"
}

프로필이 필요하면 Droplet을 초기화할 때 오류 이상을 받아야 합니다.
Advanced
provider (설정 정보 초기화) 를 스스로 초기화할 수 있습니다.
import Vapor
import VaporMySQL

let drop = Droplet()

let mysql = try VaporMySQL.Provider(host: "localhost", user: "root", password: "", database: "vapor")
drop.addProvider(mysql)

...

drop.run()

Create a Provider
Provider를 만드는 것은 간단합니다. Config/mysql.json 프로토콜을 준수하는 Vapor.Provider 클래스의 패키지만 만들면 됩니다.
: 이것은 Provider 패키지의provider입니다. 메시지를 받고 Foo 시작할 때 메시지를 출력합니다.
import Vapor

public final class Provider: Vapor.Provider {
    public let message: String
    public let provided: Providable

    public convenience init(config: Config) throws {
        guard let message = config["foo", "message"].string else {
            throw SomeError
        }

        try self.init(message: message)
    }

    public init(message: String) throws {
        self.message = message
    }

    public func afterInit(_ drop: Droplet) {

    }

    public func beforeServe(_ drop: Droplet) {
        drop.console.info(message)
    }
}

이 provider를 구성하려면 Droplet 파일이 필요합니다.
{
    "message": "The message to output"
}

초기화 방법Config/foo.json을 사용하여 수동으로 설정할 수도 있습니다.
요약: Provider는 외부 파일을 도입하는 방법을 제공했고 이 장은 사용자 정의 패키지 파일을 만드는 방법을 소개했다.

좋은 웹페이지 즐겨찾기