Skip to content

Instantly share code, notes, and snippets.

@jinahadam
Last active March 1, 2018 10:22
Show Gist options
  • Save jinahadam/701ae5d93f15018040848c8af86fb76f to your computer and use it in GitHub Desktop.
Save jinahadam/701ae5d93f15018040848c8af86fb76f to your computer and use it in GitHub Desktop.
#swift #perfect
let server = HTTPServer()
server.serverPort = 8080
server.documentRoot = "webroot"
var routes = Routes()
routes.add(method: .get, uri: "/", handler: {
request, response in
response.setBody(string: "Hello, Perfect").completed()
})
func returnJSONMessage(message: String, response: HTTPResponse) {
do {
try response.setBody(json: ["message": message])
.setHeader(.contentType, value: "application/json")
.completed()
} catch {
response.setBody(string: "Error handling Request: \(error)")
.completed(status: .internalServerError)
}
}
routes.add(method: .get, uri: "/hello", handler: {
request, response in
returnJSONMessage(message: "Hello, JSON", response: response)
})
routes.add(method: .get, uri: "/hello/nested", handler: {
request, response in
returnJSONMessage(message: "Hello, nested, JSON", response: response)
})
routes.add(method: .get, uri: "/beers/{num_beers}", handler: {
request, response in
guard let numberBeerString = request.urlVariables["num_beers"],
let numberBeersInt = Int(numberBeerString) else {
response.completed(status: .badRequest)
return
}
returnJSONMessage(message: "beer \(numberBeersInt - 1)", response: response)
})
routes.add(method: .post, uri: "post", handler: {
request, response in
guard let name = request.param(name: "name") else {
response.completed(status: .badRequest)
return
}
returnJSONMessage(message: "Hello \(name)", response: response)
})
server.addRoutes(routes)
do {
try server.start()
} catch PerfectError.networkError(let err, let msg) {
print("Network error thrown: \(err), \(msg)")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment