• Stars
    star
    109
  • Rank 308,935 (Top 7 %)
  • Language
    Swift
  • License
    Apache License 2.0
  • Created almost 8 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

HTTP server for Perfect.

Perfect-HTTPServer 简体中文

Get Involed with Perfect!

Star Perfect On Github Stack Overflow Follow Perfect on Twitter Join the Perfect Slack

Swift 4.0 Platforms OS X | Linux License Apache PerfectlySoft Twitter Slack Status

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.

.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 repository for details.

If you are beginning a new project with Perfect look at the 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:

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.

More Repositories

1

Perfect

Server-side Swift. The Perfect core toolset and framework for Swift Developers. (For mobile back-end development, website and API development, and more…)
Swift
13,836
star
2

PerfectDocs

Reference and documentation for Perfect (Server-side Swift). Perfect (支持服务器端Swift语言的软件函数库)使用文档和参考手册.
HTML
568
star
3

PerfectTemplate

Empty Perfect Starter Project.
Swift
223
star
4

Perfect-TensorFlow

TensorFlow C API Class Wrapper in Server Side Swift.
Swift
166
star
5

Perfect-MySQL

A stand-alone Swift wrapper around the MySQL client library, enabling access to MySQL servers.
Swift
124
star
6

Perfect-Notifications

Apple Push Notifications (APNs) Server-Side library.
Swift
115
star
7

Perfect-CRUD

CRUD is an object-relational mapping (ORM) system for Swift 4+.
Swift
63
star
8

Perfect-Python

An expressway to import Python 2.7 modules into Server Side Swift
Swift
62
star
9

Perfect-PostgreSQL

A stand-alone Swift wrapper around the libpq client library, enabling access to PostgreSQL servers.
Swift
54
star
10

Perfect-MongoDB

A stand-alone Swift wrapper around the mongo-c client library, enabling access to MongoDB servers.
Swift
52
star
11

Perfect-SQLite

A stand-alone Swift wrapper around the SQLite 3 client library.
Swift
50
star
12

Perfect-CURL

cURL support for Perfect.
Swift
41
star
13

Perfect-Markdown

A solution to convert markdown text into html presentation in Swift, based on GerHobbelt's "upskirt" project.
Swift
40
star
14

Perfect-Heroku-Buildpack

Swift + Perfect Buildpack for Heroku
Shell
38
star
15

Perfect-Ubuntu

Install Swift and Perfect dependencies into an Ubuntu 16.04 system.
Shell
35
star
16

Perfect-FileMaker

A stand-alone Swift wrapper around the FileMaker XML Web publishing interface, enabling access to FileMaker servers.
Swift
34
star
17

Perfect-HTTP

Base HTTP Support for Perfect.
Swift
31
star
18

Perfect-Crypto

Cryptographic Operations
Swift
28
star
19

Perfect-Redis

A Swift client for Redis.
Swift
28
star
20

Perfect-LDAP

A simple Swift class wrapper of OpenLDAP.
Swift
27
star
21

Perfect-Net

Core asynchronous networking package used in Perfect. Includes support for TCP, SSL, UNIX socket files and IO event handling.
Swift
27
star
22

Perfect-Mustache

Mustache template support for Perfect.
Swift
24
star
23

Perfect-Kafka

An Express Swift Client of Apache Kafka 0.8, the Stream Processing Platform
Swift
24
star
24

Perfect-WebSockets

WebSockets support for Perfect.
Swift
23
star
25

Perfect-SysInfo

This project provides a Swift library to monitor system performance in essential metrics.
Swift
23
star
26

Perfect-Mosquitto

A Swift Class Wrapper of Perfect-libMosquitto, the MQTT client
Swift
23
star
27

Perfect-Zip

Perfect Zip compression utility.
Swift
21
star
28

Perfect-SMTP

SMTP Client for Perfect.
Swift
21
star
29

PerfectAppTemplate

Provides a structure for a larger project to grow into. It contains an HTTP Server config that loads from pre-separated Filters and Routes, a JSON config loader, and directories into which you can organize your handlers, objects and utility functions.
Swift
21
star
30

Perfect-NIO

Perfect 4 NIO
Swift
20
star
31

Perfect-Logger

File-Based Logging.
Swift
19
star
32

Perfect-Thread

Core threading library for Perfect Server Side Swift. Includes support for serial and concurrent thread queues, locks, read/write locks and events.
Swift
18
star
33

Perfect-XML

XML support for Perfect.
Swift
16
star
34

Perfect-Authentication

OAuth2 Implementations with Facebook, Google, LinkedIn, Slack, SalesForce and GitHub providers.
Swift
15
star
35

Perfect-INIParser

A lightweight INI file parser in Server Side Swift
Swift
15
star
36

Perfect-LocalMirror

Perfect Server Local Image Builder 编译加速器
Shell
14
star
37

Perfect-COpenSSL

C module OpenSSL import for Perfect.
C
12
star
38

Perfect-OAuth2

OAuth2 Implementations with Facebook, Google, LinkedIn, Slack, SalesForce and GitHub providers.
Swift
10
star
39

Perfect-Stripe

Server Side Swift 3 Stripe API
Swift
10
star
40

Perfect-FastCGI

FastCGI server for Perfect.
Swift
9
star
41

Perfect-MariaDB

A stand-alone Swift wrapper around the MariaDB client library, enabling access to MariaDB servers. http://www.perfect.org
Swift
9
star
42

Perfect-libxml2

libxml2 support module for Perfect.
Swift
8
star
43

Perfect-Local-Auth-PostgreSQL-Template

Template starter template for a Local Authentication - equipped server
CSS
8
star
44

PerfectAPIGenerator

Documentation generator for the Perfect API, written in Perfect.
JavaScript
8
star
45

Perfect-Hadoop

Perfect Hadoop: WebHDFS, MapReduce & Yarn.
Swift
8
star
46

PerfectDocGenerator

The Perfect Documentation build process.
Swift
7
star
47

Perfect-FastCGI-Apache2.4

mod_perfect - Apache FastCGI connector
C++
7
star
48

Perfect-ZooKeeper

A ZooKeeper Client in Swift (LINUX ONLY)
Swift
7
star
49

Perfect-LocalAuthentication-PostgreSQL

Local Authentication processes and routes
Swift
6
star
50

Perfect-COpenSSL-Linux

C module OpenSSL import for Perfect (Linux).
C++
6
star
51

Perfect-WebRedirects

Filter for specified routes (including trailing wildcard routes) and perform redirects as instructed if a match is found.
Swift
5
star
52

Perfect-OpenLDAP

OpenLDAP C Library for Swift.
Swift
5
star
53

Perfect-libcurl

C module libcurl import for Perfect.
C
5
star
54

Perfect-Turnstile-MongoDB

A MongoDB ORM single-package integration for Turnstile authentication.
Swift
5
star
55

Perfect-LinuxBridge

C module Linux compatibility import for Perfect
C
5
star
56

Perfect-Repeater

A simple library that takes a closure and executes it at the specified interval until the closure returns false or the application is terminated.
Swift
5
star
57

Perfect-Turnstile-MySQL

A MySQL ORM single-package integration for Turnstile authentication.
Swift
5
star
58

Perfect-Session-MySQL

MySQL Driver for Perfect Sessions.
Swift
4
star
59

Perfect-LocalAuthentication-MySQL

Local Authentication, MySQL module
Swift
4
star
60

Perfect-Turnstile-PostgreSQL

A PostgreSQL ORM single-package integration for Turnstile authentication.
Swift
4
star
61

Perfect-libMosquitto

C library of Mosquitto (MQTT client) for Swift
Swift
4
star
62

Perfect-Session

Session drivers (for use in Perfect projects).
Swift
4
star
63

Perfect-sqlite3-support

C module import for sqlite3.
Swift
4
star
64

Perfect-Session-MongoDB

Perfect Session Drivers for MongoDB.
Swift
4
star
65

Perfect-Turnstile-SQLite

An SQLite ORM single-package integration for Turnstile authentication.
Swift
4
star
66

PerfectTemplateFCGI

Perfect Empty Starter Project for FastCGI.
Swift
3
star
67

Perfect-libSASL

SASL C library for Swift.
C
3
star
68

Perfect-CZlib-src

C
3
star
69

Perfect-SPNEGO

A general Server Side Swift library that implements SPNEGO mechanism.
C
3
star
70

Perfect-Session-Redis

Redis Driver for Perfect Sessions
Swift
3
star
71

Perfect-CouchDB

CouchDB Database Connector for Perfect.
Swift
3
star
72

Perfect-Local-Auth-MySQL-Template

CSS
3
star
73

PerfectTemplateAppEngine

Perfect Empty Starter Project for Google App Engine.
Swift
3
star
74

Perfect-Session-PostgreSQL

PostgreSQL Driver for Perfect Sessions.
Swift
3
star
75

Perfect-mysqlclient

C module import for MySQL client.
Swift
3
star
76

Perfect-GoogleAnalytics-MeasurementProtocol

Server side Google Analytics, using Swift / Perfect
Swift
2
star
77

Perfect-ODBC

Perfect connector for ODBC databases
Swift
2
star
78

Perfect-Session-SQLite

SQLite driver for Perfect Sessions.
Swift
2
star
79

Perfect-mariadbclient

C module import for MariaDB client.
Swift
2
star
80

Perfect-NewRelic-Linux

This project provides a Swift class wrapper for New Relic Agent SDK.
Swift
2
star
81

PerfectDocsUI

User interface for Perfect Docs Dev.
JavaScript
2
star
82

Archived-Perfect-Issues

JIRA Archive of Perfect.
Swift
2
star
83

Perfect-Turnstile-CouchDB

A CouchDB ORM single-package integration for Turnstile authentication.
Swift
2
star
84

Perfect-libpq

C module import for libpq.
Swift
2
star
85

Perfect-libpq-linux

C module import for libpq.
Swift
2
star
86

Perfect-mysqlclient-Linux

C module import for MySQL client Linux.
Swift
1
star
87

Perfect-Session-CouchDB

CouchDB Driver for Perfect Sessions.
Swift
1
star
88

Perfect-CloudFormation

Support for CloudFormation server instances.
Swift
1
star
89

Perfect-mongo-c-linux

Obsolete - Perfect Mongodb c-binding for linux.
Swift
1
star
90

Perfect-NIOCompat

Perfect 3 -> 4 compatability
Swift
1
star
91

Perfect-mongo-c

Obsolete - C module import for mongo-c.
Swift
1
star
92

Perfect-Assistant-Issues

Tracking issues with Perfect Assistant
1
star
93

Perfect-mariadbclient-Linux

C module import for MariaDB client Linux.
Swift
1
star