Skip to content

Latest commit

 

History

History
71 lines (49 loc) · 2.2 KB

File metadata and controls

71 lines (49 loc) · 2.2 KB

APIServer

English | 日本語

アプリケーションコードにウェブフレームワークの名前を出さずに HTTP サーバーを書く。

Swift 6.0+ macOS 14+ License

特徴

  • シグネチャにフレームワークが出ない — Vapor は内部で import され公開 API に現れないので、アプリ側は Vapor 無しでビルドもテストもできる
  • コントラクト駆動のルーティングAPIService をマウントすれば、入力のデコードと認証チェックまでコントラクトから決まり、エンドポイントは一括登録される
  • ハンドラーはレスポンスではなく値を返すEncodable の戻り値が ISO 8601 の日付で JSON エンコードされる
  • CORS・認証・エラーのミドルウェア — 標準で入っていて、自作のものも足せる
  • Server-Sent Events と WebhookAsyncSequence をそのまま流す。Webhook はヘッダーと生バイトを受け取れる
  • strict concurrency 対応 — 公開型はすべて Sendable

クイックスタート

import APIServer

let server = try await Server.create()

server.get("health") {
    ["status": "healthy"]
}

server.use(CORSServerMiddleware())
server.useErrorMiddleware()

try await server.run()

ドキュメント

API リファレンスとガイド — 入門・ミドルウェア・認証・抽象化の設計まで。

インストール

Package.swift に追加する:

dependencies: [
    .package(url: "https://github.com/no-problem-dev/swift-api-server.git", from: "3.0.0")
]

ターゲットにプロダクトを足す:

.target(
    name: "YourTarget",
    dependencies: [
        .product(name: "APIServer", package: "swift-api-server")
    ]
)

動作環境

APIServer Swift プラットフォーム
2.x 6.0+ macOS 14+ · Linux

ライセンス

MIT。LICENSE を参照。