You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This repository holds a blank Perfect project which can be cloned to serve as a starter for new work. It builds with Swift Package Manager and produces a stand-alone HTTP executable.
Compatibility with Swift
The master branch of this project currently compiles with Xcode 10 and the Swift 4.1 or higher toolchain on Ubuntu.
Building & Running
The following will clone and build an empty starter project and launch the server on port 8181.
git clone https://github.com/PerfectlySoft/PerfectTemplate.git
cd PerfectTemplate
swift run
You should see the following output:
[INFO] Starting HTTP server localhost on 0.0.0.0:8181
This means the server is running and waiting for connections. Access https://localhost:8181/ to see the greeting. Hit control-c to terminate the server.
Starter Content
The template file contains a simple "hello, world!" request handler and shows how to serve static files, and compress outgoing content.
import PerfectHTTP
import PerfectHTTPServer
// An example request handler.
// This 'handler' function can be referenced directly in the configuration below.
func handler(request:HTTPRequest, response:HTTPResponse){
// Respond with a simple message.
response.setHeader(.contentType, value:"text/html")
response.appendBody(string:"<html><title>Hello, world!</title><body>Hello, world!</body></html>")
// Ensure that response.completed() is called when your processing is done.
response.completed()}
// Configure one server which:
// * Serves the hello world message at <host>:<port>/
// * Serves static files out of the "./webroot"
// directory (which must be located in the current working directory).
// * Performs content compression on outgoing data when appropriate.
varroutes=Routes()
routes.add(method:.get, uri:"/", handler: handler)
routes.add(method:.get, uri:"/**",
handler:StaticFileHandler(documentRoot:"./webroot", allowResponseFilters:true).handleRequest)tryHTTPServer.launch(name:"localhost",
port:8181,
routes: routes,
responseFilters:[(PerfectHTTPServer.HTTPFilter.contentCompression(data:[:]),HTTPFilterPriority.high)])
Further Information
For more information on the Perfect project, please visit perfect.org.