Tag: Vapor

Heimdall:为Vapor编写HTTP请求记录器

本文是Heimdall源代码的简要概述,并说明了为Vapor Web Framework编写第三方插件的过程。 去年,一位导师建议我为Vapor Web框架编写一个记录器。 最初,这似乎是一个复杂的任务,但结果再简单不过了。 让我们创建一个插件! 创建一个Swift包 蒸气插件必须是快速软件包,因此可以使用Swift Package Manager导入。 因此,首先需要在终端上运行以下命令来创建一个快速包。 麦克迪尔·海姆达尔 光盘海姆达尔 swift package init –type可执行文件 这将创建以下目录结构。 删除Sources目录中的main.swift文件。 Heimdall只是2个快速文件,而且少于200行代码! 以下是这两个文件的说明,没有实现细节。 如果您想查看所有代码,请参考github repo。 记录仪 HTTP记录器做什么? 它访问有关每个请求和响应的信息,例如状态码,HTTP方法等,并将其写入文件。 您需要创建一个“中间件”,该中间件针对每个请求运行,并将数据简单地写入文件。 以下代码片段显示了没有实现细节的基本中间件。 类记录器:中间件{ var path:字符串=“〜/ Logs / logfile.txt” //此方法针对每个Web请求运行 公共功能响应(请求:请求, chainingTo next:Responder)throw-> Response { //从响应对象访问数据 writeToFile(dataToBeLogged) } func writeToFile(path:){ //编写写入文件的快速代码 } } 记录仪与蒸气项目集成的提供商 现在您有了一个记录器,但是其他开发人员将如何在您的项目中导入您的记录器? 要添加功能或为Vapor创建第三方程序包,您需要创建一个“提供程序”。 提供者提供了一种在Vapor Web App中导入第三方程序包的统一方法。 […]

蒸气3发布时间表

服务器端Swift框架Vapor的最新版本即将完成! 在考察Swift 4.1及其对蒸气的影响时,我们决定与Swift 4.1一起发布3.0。 这意味着我们无法给出具体的发布日期(除非Apple发布了发布日期)。 但是,我们已经决定了适用于早期采用者的GM(候选发布)版本的具体发布日期。 斯威夫特4.1 Swift 4.1是Swift最大和最佳的“ .1”版本之一。 头条新闻当然是条件一致性。 Vapor团队(在字面上)一直在焦急地等待着这一点。 尽管此功能将在4.1中发布是一个好消息,但它确实对Vapor 3造成了问题。条件一致性对我们框架的核心有很大影响-它不是纯粹的累加更改。 使用Swift 4.1进行编译时,我们过去用来解决Swift 4.0中没有条件一致性的hacks将会失效。 要让Vapor 3与Swift 4.0和4.1一起使用,将意味着在我们最关键的代码区域中会有大量的#if swift(>=4.1) / #else / #endif宏。 此外,macOS安全性库中的一个严重错误已阻止Swift 2.1编译了我们的HTTP / 2代码。 这意味着我们可以依靠4.1发行带有本地HTTP / 2支持的Vapor 3。 考虑到这些问题,我们认为最大程度地减少错误,混乱和维护人员时间的最佳选择是只需要Swift 4.1。 可以从Swift.org快照站点下载适用于macOS和Ubuntu的Swift 4.1。 不需要Xcode 9.3 beta。 很快,Vapor 3的beta分支将开始依赖Swift 4.1。 Beta.1 Beta.1发行版将于2月9日发布,这将是Vapor 3的第一个带有完整标签的发行版(其正确存储库中的模块)。 这将意味着大大提高稳定性,因为您必须通过修改Package.swift文件来选择加入更新(仅swift package update不会破坏您的代码)。 此外,在2月9日之后,打破变更必须是考虑合并的关键问题。 我们希望教程作者在此之后开始发布早期的Vapor 3内容(包括精彩的Ray Wenderlich备受期待的视频系列)。 这将是开始试用Vapor 3的好时机。对于软件包维护者来说,这将是更新软件包的好时机。 […]

教程:如何使用Leaf

还可以学习叶子-一种可轻松生成视图的模板语言! 您可以在github上找到本教程的结果 本教程是如何设置Vapor 3项目的自然后续。 您可以先阅读该教程然后再回来,也可以跳过并继续阅读😊 指数 1.创建一个新项目 2.生成Xcode项目 3.配置您的项目以使用Leaf 4.创建您的第一个模板/视图 5.实施服务视图的路线 6.奖金:将数据传递到视图 7.从这里去哪里 1.创建一个新项目 蒸气工具箱非常好,让您可以使用任何git-repo作为模板轻松创建新项目。 由于我们将基于上述教程的结果,因此我们将使用它作为模板来创建一个新项目: 蒸气新项目名称–template = vaporberlin / my-first-route 注意:您可以通过在终端中输入vapor –help来查看蒸气工具箱的全部功能。 我们的命令将使用来自vaporberlin的 my-first-route作为模板创建一个名为projectName的项目(感谢vapor toolbox🤛🏻)。 2.生成Xcode项目 在生成Xcode项目之前,我们必须添加Leaf作为依赖项,并在Package.swift中更改包名称: // swift-tools-version:4.0 导入PackageDescriptionlet包=包( 名称:“ projectName”,//已更改 依赖项:[ .package(URL:“ https://github.com/vapor/vapor.git”,来自:“ 3.0.0”), .package(URL:“ https://github.com/vapor/leaf.git”,来自:“ 3.0.0”)//添加 ], 目标:[ .target(name:“ App”,依赖项:[“ Vapor”, “ Leaf” ]), .target(name:“ Run”,依赖项:[“ App”]), .testTarget(name:“ AppTests”,依赖项:[“ App”]), ] […]

实用标记—服务器端Swift研讨会

这通常会提高自动化,代码生成和工具支持的水平。 它还会生成更稳定的代码。 开源社区 开源社区一直在努力使用Swift for Server构建库。 在撰写本文时,顶级服务器端Swift框架(在GitHub上按星标列出)是: 完美 (12271⭐) 蒸气 (11406⭐) Kitura ( 6019⭐ ) 泽沃 ( 1718⭐ ) Ryan Collins的这篇有用的文章测试了所有这些Framework的性能,并将它们与Node.js进行了比较。 他的结论是,所有这些框架的性能都非常好,并且在每次测试中,Node.js都被其中至少两个击败。 这意味着swift在发球方面表现非常出色。 汽 尽管每个框架都有其独特之处,但研讨会的主题是由纽约市的美国软件工程师Tanner Nelson(@ tanner0101)创建的Vapor 。 在2016年9月正式发布Vapor 1.0之后,团队一直在努力工作,当前可用的版本是Vapor 2.2.2。 他们已经在研究Vapor 3。 为什么要蒸气 ? 蒸气有许多优点: 巨大而活跃的社区 非常简单的语法 纯粹用Swift编写 易读易懂的API,不依赖第三方库 成为Swift可以使他们专注于保持API的简单性,可读性,并使其命名和其他约定与该语言保持一致。 唯一的缺点是:他们牺牲了一点速度和性能,以求成为纯Swift。 链接 https://github.com/vapor/vapor https://docs.vapor.codes/2.0/ http://vapor.university 在结束本文时,我同意Ryan Collins所说的话,即Server-Side Swift有望成为编程领域的一个有力竞争者。 谢谢你的时间! 希望本文对您有所帮助。 在Twitter上联系: stefanofrosoni

使用Vapor 2和Swift创建网页

这是“蒸气入门”系列文章的第2部分 在本教程中,我们将利用在第1部分中学到的知识,并使用Vapor的模板系统Leaf创建一些网页。 首先,让我们讨论什么是Leaf。 Leaf是一个模板引擎,旨在使我们能够动态显示信息。 想象一下,您想创建一个HTML页面来显示特定于当前用户的信息,而您不必为每个用户创建新页面。 使用模板,我们可以在多种情况下重用我们的代码。 我们可以使用其他模板系统,例如Mustache和Stencil,但是由于Leaf是使用Swift构建的,因此在本教程中将使用它。 首先,让我们开始生成一个新的蒸气项目。 步骤1 —生成一个新的Vapor项目 打开您的终端并输入vapor new hellopages 。 第2步-生成 .xcodeproj 项目文件 在终端中输入cd hellopages && vapor xcode 。 这将把我们带入hellopage文件夹,并运行vapor命令生成项目文件。 我们一直想生成Xcode项目文件,因为这使我们能够访问Xcode的错误检查和代码完成,这使得使用Swift进行编码变得非常容易。 第3步-为我们的新网页创建一条新路线 首先,打开main.swift文件,并在第一条路线下方创建一条路线。 在第一条路线的正下方输入以下代码。 // 1 drop.get(“ hello”){要求 // 2 返回“ Hello World” } 这将创建对路由hello的GET请求。 如果运行此程序并使用浏览器导航到localhost:8080/hello我们将看到“ Hello World”。 要创建蒸气网页,我们需要更改对路线的响应。 将闭包的返回值更改为以下内容 返回尝试drop.view.make(“ hello”) 此行告诉Vapor查找名为hello.leaf的叶模板并将hello.leaf呈现给用户。 如果您想知道hello.leaf文件在哪里,我们还没有创建它。 您的main.swift文件现在应该看起来像这样。 第4步-创建问候页面。 要创建问候页面,我们将创建一个hello.leaf文件。 .leaf扩展名从上面的第12行中排除,因为Leaf是与Vapor一起使用的默认模板引擎。 模板文件必须放在“ Resources/Views文件夹中。 现在让我们创建文件。 […]

蒸气3系列II-认证

在上一篇文章中,我们使用Vapor 3完成了一个简单的RESTful API服务器。更具体地说,我们创建了User模型以将数据存储到内存中的SQLite数据库中,并实现了UsersController来处理来自客户端的交互。 尽管我们的服务器已经具有许多出色的功能,但是它也存在一个问题:任何人都可以创建新用户并将其删除。 换句话说,端点上没有身份验证以确保只有已知用户才能操纵数据库。 在本文中,我将演示如何存储密码和经过身份验证的用户,以及如何使用HTTP基本令牌和承载令牌认证来保护我们的端点。 请注意,本文将基于先前的实现。 一般来说,身份验证是验证某人身份的过程,一种常见的身份验证方法是使用用户名和密码。 打开我们的User.swift文件,并在var username: String下添加以下属性var username: String 。