All Projects → hummingbird-project → Hummingbird

hummingbird-project / Hummingbird

Licence: apache-2.0
Lightweight, flexible HTTP server framework written in Swift

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Hummingbird

Binserve
A blazingly fast static web server with routing, templating, and security in a single binary you can set up with zero code. ⚡️🦀
Stars: ✭ 401 (+251.75%)
Mutual labels:  server, http-server, web-server
Local Web Server
A lean, modular web server for rapid full-stack development.
Stars: ✭ 916 (+703.51%)
Mutual labels:  server, web-server
Iodine
iodine - HTTP / WebSockets Server for Ruby with Pub/Sub support
Stars: ✭ 720 (+531.58%)
Mutual labels:  server, http-server
Go Bootstrap
Easy way to bootstrap a web server in Go (Routing|Middleware|Https)
Stars: ✭ 27 (-76.32%)
Mutual labels:  server, http-server
Swiftserverside Vapor
🦄 Swift server open source projects based on the Swift 4.1 and Vapor 3 frameworks. (Swift 服务端开源项目)
Stars: ✭ 588 (+415.79%)
Mutual labels:  server-side-swift, server
Reflection
DEPRECATED
Stars: ✭ 592 (+419.3%)
Mutual labels:  server-side-swift, server
Caddy
Matthew Holt began developing Caddy in 2014 while studying computer science at Brigham Young University. (The name "Caddy" was chosen because this software helps with the tedious, mundane tasks of serving the Web, and is also a single place for multiple things to be organized together.) It soon became the first web server to use HTTPS automatically and by default, and now has hundreds of contributors and has served trillions of HTTPS requests.
Stars: ✭ 35,966 (+31449.12%)
Mutual labels:  http-server, web-server
Web Server Bundle
WebServerBundle provides commands for running applications using the PHP built-in web server. It simplifies your local development setup because you don't have to configure a proper web server such as Apache or Nginx to run your application.
Stars: ✭ 1,281 (+1023.68%)
Mutual labels:  server, web-server
Fortjs
Component based MVC web framework for nodejs targeting good code structures & modularity.
Stars: ✭ 44 (-61.4%)
Mutual labels:  server, http-server
Nodemcu Espress
Ultra-Lightweight and modular Node.js express like http server for NodeMCU. web - ESP8266
Stars: ✭ 39 (-65.79%)
Mutual labels:  server, http-server
Facebooc
Yet another Facebook clone written in C
Stars: ✭ 483 (+323.68%)
Mutual labels:  http-server, web-server
Mofuw
mofuw is *MO*re *F*aster, *U*ltra minimal *W*ebserver.
Stars: ✭ 107 (-6.14%)
Mutual labels:  http-server, web-server
Uwsgi Nginx Docker
Docker image with uWSGI and Nginx for applications in Python 3.5 and above and Python 2.7 (as Flask) in a single container. Optionally with Alpine Linux.
Stars: ✭ 466 (+308.77%)
Mutual labels:  server, web-server
Swiftengine
Apple Swift based HTTP server. The answer for a Swift based, turn key, crash resilient, high scale, and production grade web server.
Stars: ✭ 660 (+478.95%)
Mutual labels:  server-side-swift, http-server
Vapor
💧 A server-side Swift HTTP web framework.
Stars: ✭ 21,194 (+18491.23%)
Mutual labels:  server-side-swift, server
Jerrymouse
A scalable java servlet container base on reactor
Stars: ✭ 27 (-76.32%)
Mutual labels:  server, http-server
Hi Nginx
A fast and robust web server and application server for C++,Python,Lua ,Java,quickjs language
Stars: ✭ 346 (+203.51%)
Mutual labels:  server, web-server
Cppwebframework
​The C++ Web Framework (CWF) is a MVC web framework, Open Source, under MIT License, using C++ with Qt to be used in the development of web applications.
Stars: ✭ 348 (+205.26%)
Mutual labels:  server, http-server
Kitura
A Swift web framework and HTTP server.
Stars: ✭ 7,533 (+6507.89%)
Mutual labels:  server-side-swift, server
Http.swift
A tiny HTTP server engine written in swift.
Stars: ✭ 99 (-13.16%)
Mutual labels:  server, http-server

Hummingbird

Lightweight, flexible server framework written in Swift.

Hummingbird consists of three main components, the core HTTP server, a minimal web application framework and the extension modules.

HummingbirdCore

HummingbirdCore contains a Swift NIO based HTTP server. You will find the code for it in the hummingbird-core repository. The HTTP server is initialized with a object conforming to protocol HBHTTPResponder which defines how your server responds to an HTTP request. The HTTP server can be extended to support TLS and HTTP2 via the HummingbirdTLS and HummingbirdHTTP2 libraries also available in the hummingbird-core repository.

HummingbirdCore can be used separately from Hummingbird if you want to write your own web application framework.

Hummingbird

Hummingbird is a lightweight and flexible web application framework that runs on top of HummingbirdCore. It is designed to require the minimum number of dependencies: swift-backtrace, swift-log, swift-nio, swift-nio-extras, swift-service-lifecycle and swift-metrics and makes no use of Foundation.

It provides a router for directing different endpoints to their handlers, middleware for processing requests before they reach your handlers and processing the responses returned, support for adding channel handlers to extend the HTTP server, extending the core HBApplication, HBRequest and HBResponse classes and providing custom encoding/decoding of Codable objects.

The interface is fairly standard. Anyone who has had experience of Vapor, Express.js etc will recognise most of the APIs. Simple setup is as follows

import Hummingbird

let app = Application(configuration: .init(address: .hostname("127.0.0.1", port: 8080)))
app.router.get("hello") { request -> String in
    return "Hello"
}
app.start()
app.wait()

Hummingbird Extensions

Hummingbird is designed to require the least number of dependencies possible, but this means many features are unavailable to the core libraries. Additional features are provided through extensions. The Hummingbird repository comes with a HummingbirdFoundation library that contains a number of features that can only really be implemented with the help of Foundation. This include JSON encoding/decoding, URLEncodedForms, static file serving, and cookies.

Extensions provided in other repositories include

Extension Description
HummingbirdAuth Authentication framework and various support libraries
HummingbirdCompress Request decompression and response compression (uses CompressNIO)
HummingbirdFluent Interface to the Vapor database ORM (uses FluentKit)
HummingbirdRedis Interface to Redis (uses RediStack)
HummingbirdWebSocket Adds support for WebSocket upgrade to server
HummingbirdMustache Mustache templating engine

Documentation

You can find reference documentation and user guides for Hummingbird here. The hummingbird-examples repository has a number of examples of different uses of the library.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].