Tiny http server engine written in Swift programming language.
Swift Objective-C Ruby
Clone or download
ignatovSA and julien-c Fixed pointer operations in Socket (Xcode10 compilation) (#318)
* Fixed pointer operations in Socket.

* Fixed pointer operations in Socket for Linux.
Latest commit b366f5e Jul 11, 2018

README.md

Platform Swift Protocols CocoaPods Carthage Compatible

What is Swifter?

Tiny http server engine written in Swift programming language.

Branches

* stable - lands on CocoaPods and others. Supports the latest non-beta XCode and SPM. Stable.

* master - stable branch plus experimental web-framework layer.

* 2.0 - next version of Swifter (async IO). Experimental.

How to start?

let server = HttpServer()
server["/hello"] = { .ok(.html("You asked for \($0)"))  }
server.start()

How to share files?

let server = HttpServer()
server["/desktop/:path"] = shareFilesFromDirectory("/Users/me/Desktop")
server.start()

How to redirect?

let server = HttpServer()
server["/redirect"] = { request in
  return .movedPermanently("http://www.google.com")
}
server.start()

How to HTML ?

let server = HttpServer()
server["/my_html"] = scopes { 
  html {
    body {
      h1 { inner = "hello" }
    }
  }
}
server.start()

How to WebSockets ?

let server = HttpServer()
server["/websocket-echo"] = websocket({ (session, text) in
  session.writeText(text)
}, { (session, binary) in
  session.writeBinary(binary)
})
server.start()

CocoaPods? Yes.

# Use version >= 1.4.0 (sudo gem install cocoapods)
use_frameworks!
pod 'Swifter', '~> 1.3.3'

Carthage? Also yes.

# Use version >= 0.18 (https://github.com/Carthage/Carthage/releases/tag/0.18)
github "glock45/swifter" == 1.4.0

Swift Package Manager.

import PackageDescription

let package = Package(
    name: "MyServer",
    dependencies: [
        .package(url: "https://github.com/httpswift/swifter.git", .upToNextMajor(from: "1.4.0"))
    ]
)

Docker.

docker run -d -p 9080:9080 -v `pwd`:/Swifter -w /Swifter --name Swifter swift bash -c "swift run"