Vapor (web framework)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Vapor
DevelopersTanner Nelson and others
Initial releaseJanuary 18, 2016; 10 years ago (2016-01-18)[1][2]
Stable release
4.102.1[3] / July 10, 2024; 23 months ago (2024-07-10)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inSwift
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemmacOS, Ubuntu
    PlatformSwiftNIO
    TypeWeb framework
    LicenseMIT License
    Websitevapor.codes

    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
    Unsupported: 1.0 Sep 15, 2016 ≥ 3.0
    Unsupported: 2.0 May 17, 2017 ≥ 3.1
    Unsupported: 3.0 May 4, 2018 ≥ 4.1
    Latest version: 4.0 April 9, 2020 ≥ 5.2
    Future version: 5.0 TBD ≥ TBD
    Legend:
    Unsupported
    Supported
    Latest version
    Preview version
    Future version

    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]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    27. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    28. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).