Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/perfectlysoft/perfect-httpserver
HTTP server for Perfect.
https://github.com/perfectlysoft/perfect-httpserver
http httpserver perfect server-side-swift swift
Last synced: about 23 hours ago
JSON representation
HTTP server for Perfect.
- Host: GitHub
- URL: https://github.com/perfectlysoft/perfect-httpserver
- Owner: PerfectlySoft
- License: apache-2.0
- Created: 2016-07-06T15:17:42.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2020-07-17T15:52:50.000Z (over 4 years ago)
- Last Synced: 2024-10-30T17:15:48.256Z (15 days ago)
- Topics: http, httpserver, perfect, server-side-swift, swift
- Language: Swift
- Homepage: https://www.perfect.org
- Size: 916 KB
- Stars: 108
- Watchers: 11
- Forks: 63
- Open Issues: 16
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Perfect-HTTPServer [简体中文](README.zh_CN.MD)
HTTP Server for Perfect
This repository contains the main HTTP 1.1 & HTTP/2 server.
If you are using this server for your Perfect Server-Side Swift project then this will be the main dependency for your project.
```swift
.package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", from: "3.0.0")
```If you are starting out with Perfect look at the main [Perfect](https://github.com/PerfectlySoft/Perfect) repository for details.
If you are beginning a new project with Perfect look at the [PerfectTemplate](https://github.com/PerfectlySoft/PerfectTemplate) project for starter instructions.
When building on Linux, OpenSSL 1.0.2+ is required for this package. On Ubuntu 14 or some Debian distributions you will need to update your OpenSSL before this package will build.
### HTTP/2
As of version 2.2.6, experimental HTTP/2 server support is available but is disabled by default. To enable HTTP/2, add "alpnSupport" to your server's TLSConfiguration struct:
```swift
let securePort = 8181
let tls = TLSConfiguration(certPath: "my.cert.pem",
alpnSupport: [.http2, .http11])try HTTPServer.launch(
.secureServer(tls,
name: "servername",
port: securePort,
routes: secureRoutes))
```This will enable HTTP/2 to be used over secure connections if the client supports it. If the client does not support HTTP/2 then the server will use HTTP 1.x. HTTP/2 support is only offered over secure connections. Setting the global `http2Debug` variable to true will have the HTTP/2 server print much debugging information to the console while in use.
Please contact us if you experience any problems or incompatibilities while experimenting with HTTP/2 support.
## QuickStart
Add the dependency to your Package.swift
`.package(url: "https://github.com/PerfectlySoft/Perfect-HTTPServer.git", from: "3.0.0")`
In your app, launch one or more servers.
```
// start a single server serving static files
try HTTPServer.launch(name: "localhost", port: 8080, documentRoot: "/path/to/webroot")
// start two servers. have one serve static files and the other handle API requests
let apiRoutes = Route(method: .get, uri: "/foo/bar", handler: {
req, resp in
//do stuff
})
try HTTPServer.launch(
.server(name: "localhost", port: 8080, documentRoot: "/path/to/webroot"),
.server(name: "localhost", port: 8181, routes: [apiRoutes]))
// start a single server which handles API and static files
try HTTPServer.launch(name: "localhost", port: 8080, routes: [
Route(method: .get, uri: "/foo/bar", handler: {
req, resp in
//do stuff
}),
Route(method: .get, uri: "/foo/bar", handler:
HTTPHandler.staticFiles(documentRoot: "/path/to/webroot"))
])
let apiRoutes = Route(method: .get, uri: "/foo/bar", handler: {
req, resp in
//do stuff
})
// start a secure server
try HTTPServer.launch(.secureServer(TLSConfiguration(certPath: "/path/to/cert"), name: "localhost", port: 8080, routes: [apiRoutes]))
```## Documentation
For further information, please visit [perfect.org](http://www.perfect.org/docs/HTTPServer.html).