English | 日本語
HTTP API を Swift で一度書けば、クライアントとサーバーが同じ定義を共有する。エンドポイント・パラメータ・エラーが両側でコンパイラに検査される。
エンドポイントは struct として書く。プロパティがリクエスト、Output がレスポンスで、その間はマクロが生成する。
URL の組み立て、クエリのエンコード、ボディのエンコード、そして生のリクエストを同じ struct に戻すサーバー側のデコードまで。
@APIGroup/@Endpointで API を宣言的に記述する@PathParam・@QueryParam・@Body・@Headerが各値をリクエストのどこに置くかを決める@StreamingEndpointが Server-Sent Events を扱う- 通信層は同梱しない。クライアントは自分で用意するので URLSession でも他でも動く
import APIContract
@APIGroup(path: "/v1/users", auth: .bearer)
enum UsersAPI {
@Endpoint(.get, path: ":userId")
struct Get {
@PathParam var userId: String
typealias Output = User
}
}
let user = try await UsersAPI.Get(userId: "123").execute(using: client)API リファレンスとガイド — エンドポイントの定義、クライアントの実装、同じ定義でサーバーを動かす方法。
Swift 6.2+ · iOS 17+ / macOS 14+ / tvOS 17+ / watchOS 10+ · Linux
dependencies: [
.package(url: "https://github.com/no-problem-dev/swift-api-contract.git", from: "2.0.0")
].target(
name: "YourTarget",
dependencies: [
.product(name: "APIContract", package: "swift-api-contract")
]
)CONTRIBUTING.md を参照。
MIT License — 詳細は LICENSE を参照。