Vapor (web framework)
| Vapor | |
|---|---|
| Error creating thumbnail: File missing | |
| Developers | Tanner Nelson and others |
| Initial release | January 18, 2016[1][2] |
| Stable release | 4.102.1[3]
/ July 10, 2024 |
| Repository |
|
| Written in | Swift |
| Engine | |
| Operating system | macOS, Ubuntu |
| Platform | SwiftNIO |
| Type | Web framework |
| License | MIT License |
| Website | vapor |
Vapor is an open source web framework written in Swift and designed for Swift development. It can be used to create RESTful APIs, web apps, and real-time applications using WebSockets. In addition to the core framework, Vapor provides an ORM, a templating language, and packages to facilitate user authentication and authorization.[4]
Vapor's source code is hosted on GitHub and licensed under the MIT License.[5] Vapor has been a part of Swift's Server APIs working group since 2016.[6][7]
History
[edit | edit source]Vapor 0.1.0 was released as a proof of concept for Swift on the server a month after Apple open sourced Swift and began Linux platform support on December 3, 2015.[8] Vapor 1.0[9] arrived in September 2016, followed by the release of Vapor 2.0 in May 2017.[10]
The framework was rewritten for Vapor 3.0[11] to be built on Apple's non-blocking networking framework SwiftNIO. Vapor 3 was released in May 2018. Apple cited the speed with which Vapor (along with Kitura) adopted the new SwiftNIO framework on the main Swift.org server page.[12]
Vapor 3's beta period saw educational material published by Packt,[13][14][15] Paul Hudson,[16] Razeware LLC,[17] and lynda.com.[18] Vapor was recognized by Swift.org with an official Swift Forum in its inaugural group of Related Projects[19] in May 2018.
Vapor 4[20]'s Alpha 1 Release started in May 2019 and the stable version released in April 2020.[21]
Releases
[edit | edit source]| Version | Release date | Swift version |
|---|---|---|
| 1.0 | Sep 15, 2016 | ≥ 3.0 |
| 2.0 | May 17, 2017 | ≥ 3.1 |
| 3.0 | May 4, 2018 | ≥ 4.1 |
| 4.0 | April 9, 2020 | ≥ 5.2 |
| 5.0 | TBD | ≥ TBD |
Source: Vapor Docs & GitHub Releases.[22][23]
Swift version support
[edit | edit source]Vapor 4 supports the last 3 minor Swift versions. As of October 27th 2023, this includes Swift 5.7, Swift 5.8 and Swift 5.9.
This meets the standards set out by the Swift Server Workgroup,[24] of which Vapor is a member[25]
Features
[edit | edit source]Vapor supports the following features:[26]
- Async / non-blocking IO
- Authentication: basic, bearer, JWT, and password
- Cache: Redis and in-memory
- Commands / console formatting
- Content negotiation: JSON, multipart, and URL-encoded form
- Crypto: RNG, ciphers, digests, RSA
- Dependency Injection / Inversion of Control[27]
- Fluent ORM: MySQL,[28] PostgreSQL, MongoDB and SQLite
- HTTP client and server
- Leaf templating: HTML etc
- Logging
- URL routing
- Validation
- WebSocket client and server
- Queue jobs
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).