🚀 Non-blocking, event-driven HTTP built on Swift NIO.
let package = Package(
...
dependencies: [
.package(url: "https://github.com/Watchants/snake-http.git", from: "0.1.1"),
],
...
)
let bootstrap = Bootstrap(
configuration: .init(host: "127.0.0.1", port: 8889),
eventLoopGroup: .init(numberOfThreads: System.coreCount)
)
try bootstrap.start().wait()
bootstrap.printAddress()
try bootstrap.onClose.wait()
class GettingController: RequestController, MappingProtocol {
let mapping: String = "/get"
@RequestMapping("", { request, channel, token in
let promise = channel.eventLoop.makePromise(of: MessageResponse.self)
let response = MessageResponse(head: .ok, body: .init(json: []))
promise.succeed(response)
return promise.futureResult
})
var root: String
}
class UserController: RequestController, MappingProtocol {
let mapping: String = "/user"
@RequestMapping("/info", { request, channel, token in
let promise = channel.eventLoop.makePromise(of: MessageResponse.self)
let response = MessageResponse(head: .ok, body: .init(json: [
"name": "tom",
"age": 20,
]))
promise.succeed(response)
return promise.futureResult
})
var info: String
@RequestMapping("/update", method: [.POST], { request, channel, token in
let promise = channel.eventLoop.makePromise(of: MessageResponse.self)
let response = MessageResponse(head: .ok, body: .init(json: []))
promise.succeed(response)
return promise.futureResult
})
var update: String
@RequestMapping("/{id}", { request, channel, token in
let promise = channel.eventLoop.makePromise(of: MessageResponse.self)
let response = MessageResponse(head: .ok, body: .init(json: [
"name": "tom",
"age": 20,
]))
promise.succeed(response)
return promise.futureResult
})
var info: String
}
link |
Stars: 0 |
Last commit: 1 week ago |
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics