Tag: 蒸气

汽。 Swift服务器端。 第1部分。

让我们考虑一下这种情况: –我们是一位iOS开发人员,希望创建一个应用程序。 如果我们想在服务器端使用出色的应用程序,则必须连接一个后端开发人员来为我们提供帮助。 –或者我们是一家年轻的成长中的公司,希望创建MVP iOS产品并向我们的投资者展示。 同样,我们必须有后端开发人员。 如果我们尝试在没有后端开发人员的情况下创建服务器端怎么办? 欢迎蒸气框架! 入门 冲泡安装蒸气/抽头/蒸气 2. 你好世界 打开您的终端,并使用命令。 蒸气新你好 完成后,转到新创建的目录。 cd你好 生成Xcode项目 现在让我们使用命令生成Xcode项目。 蒸气Xcode 生成并运行 现在,您应该已打开Xcode并运行它。 从方案菜单中选择运行方案,并以My Mac作为部署目标,然后单击播放按钮。 您应该看到终端在屏幕底部弹出。 服务器从http:// localhost:8080启动 造访Localhost 打开您的Web浏览器,然后访问localhost:8080 / hello 您应该看到以下页面。 你好,世界! 祝贺您创建,构建和运行您的第一个Vapor应用程序!

蒸气—后端的快捷选择

我决定深入研究Vapor,以及它是否真的是可行的选择。 早在2月份,我播了一段播客,概述了开发移动应用程序时不同的后端选项。 简而言之,当寻找正确的选项时,有很多选择。 例如,对于Swift开发人员而言,Vapor已成为越来越合适的选择。 因此,我决定深入研究Vapor,以及它是否真的是可行的选择。 选择的多样性 纵观后端选择的前景,可能会造成混乱。 最后, 这实际上取决于团队的技能水平 。 例如,如果您使用JavaScript来构建Web和移动应用程序,那么Node.JS就很有意义。 另一方面,如果您是.Net开发人员团队,则Web API很有意义。 此外,如果您特别精​​通PHP,Python,Ruby,Go等…,则应保持自己的舒适度。 但是,对于专注于Apple产品的单个开发人员和开发人员团队(例如我),没有专用于服务器端应用程序的框架。 因此,最接近的选项是CloudKit,它适合于数据存储,但缺少以下选项: Web和Apple设备外不支持 不支持完整备份 锁定到CloudKit数据模型中以建立关系 没有Cron工作 但是,还有其他选项可以在服务器上的Swift中继续开发。 蒸气—服务器快速处理 自Swift于2015年末开源以来,已添加了与其他操作系统的兼容性。 将Swift迁移到服务器的第一批团队之一是Vapor团队。 自2018年5月发布3.0版以来,人们的兴趣日益浓厚。 在本文中,我将回顾Vapor并介绍以下内容: 易于安装和部署 蒸气开发 数据库支持 事件驱动的异步API 因此,让我们从开始变得容易开始。 蒸气入门 在我最近发表的这篇文章中,我展示了如何在Mac和Ubuntu以及Heroku之类的服务上安装Vapor。 简而言之, 我发现该过程非常简单有效 。 也就是说,它没有其他任何Web框架那么复杂。 例如,在Mac上,开发人员可以使用相当普遍的Homebrew来点击Vapor存储库并进行安装。 有权使用Vapor CLI工具后,该工具包括一个子命令,用于使用Vapor buildpack设置Heroku应用程序。 同样在Ubuntu上,您为Vapor添加apt仓库,并通过apt命令安装。 完成此操作后,您可以轻松地使用进程监视器和http服务器的组合来代理服务器。 如果您对此过程的更多细节感兴趣, 请查看这篇文章,深入了解Vapor并设置macOS,Heroku和Ubuntu。 蒸气开发 安装了Vapor之后,该过程的下一部分将开发该应用程序。 因此,IDE非常重要。 带有蒸气的开发人员工具 尽管存在问题,我们仍然可以使用Xcode在Swift中进行开发。 但是,由于有用于构建Swift应用程序的命令行工具,开发人员可以选择自己的工具。 目前,真正的限制是Swift通常仅在macOS和Ubuntu上受支持。 也就是说, 不支持其他Linux或Unix操作系统,也不支持Windows。 但是,社区肯定会在这些领域提供更多支持来向前发展。 […]

在蒸气上具有Swift的REST API

今天是个好日子! 最近,我需要一个服务器端存储,其中包含针对JSON数据文件的某种发现服务。 所以我把自己拆开了: 作为服务器端工程师,我的一部分正在努力将文件与另外一个JSON文件存储在Amazon S3上,以作为可用数据的发现信息。 作为iOS上的客户端工程师,我的另一部分是渴望在Swift中找到一些Web服务器框架并使用它。 经过一番与自己的斗争,由于以下事实,我决定提出这个职位: 最近,我主要忙于在Swift中开发iOS应用。 实际上,我非常渴望看到与更传统的服务器技术(例如Java,JavaScript等)相比,服务器上的Swift有何不同。 在本文中,我将实现一个简单的REST API Web服务器,该服务器能够提供由唯一ID标识的JSON数据,在本例中,一部分数据将表示为从Adobe After Effects(AAE)导出为JSON的动画。 (读为“某些JSON对象”)。 所以,让我们开始吧! 制备 在快速阅读了这篇有关大多数流行的基于Swift的Web框架(如Kitura,Perfect和Vapor)的有趣文章之后,由于它的快速开发特性(即Ruby on Rails和周围的活跃社区),我决定选择后者。 不过请注意-我并不是说这是最佳选择。 因此,让我们创建一个空的Vapor项目。 首先,我们需要遵循此准则安装Vapor框架及其命令行工具。 安装完Vapor之后,创建新项目非常简单,只需在Terminal中运行以下命令即可: $ vapor new AnimationsProviderServer 生成Xcode项目以简化我们服务器的开发也很有用: $ vapor xcode 至此,我们应该准备好打开甚至运行Xcode项目! 该服务器将在默认的8080端口上可用,因此您可以在浏览器中打开“ http:// localhost:8080” URL并检查其是否有效。 简短说明 :在撰写本文时,Vapor不支持开箱即用的“热重装”功能,但是可以通过NPMJS上可用的gulp-vapor软件包进行设置。 瞧,现在让我们编码一下! 资料模型 现在是时候向服务器添加一些逻辑了。 让我们创建一个模型实体来保存有关动画的信息,现在,表示动画所需的一切就是从Adobe After Effects(AAE)导出其标识符和JSON数据。 因此,动画模型可能如下所示: 注意:确保将导入的JSON文件添加到“ App”目标中。 数据存储 我们需要某种方式访问​​导入的动画资源,以实现可能想要实现某种存储实体的方式,我们将其称为AnimationsStorage: 为了使AnimationsStorage服务在Vapor控制器中可用,我们应该在configure.swift文件中注册它: 基本上,将configure.swift文件视为有关所有可用全局服务,实用程序等的信息源。 REST API 接下来,让我们创建一个简单的控制器,该控制器通过HTTP […]

带有ORY Hydra,Vapor 3和iOS 12的OAuth2

在本教程中,我们尝试为您提供有关如何使用iOS应用,Vapor API和Hydra作为OAuth2服务器来实现OAuth2授权代码流的广泛理解。 教程系列 第1部分:ORY Hydra授权服务器的介绍和设置(您在这里) 第2部分:Vapor后端中的用户管理 第3部分:将Vapor后端设置为ORY Hydra的身份提供者 第4部分:使用AppAuth在iOS上设置OAuth2授权 您至少需要Mac才能构建iOS应用。 这对于调试Vapor后端也很有帮助。 您需要安装Docker(https://www.docker.com/get-started) 您应该对OID2授权代码与OpenID Connect的工作原理有基本的了解。 有很多资源,例如,您可以查看DigitalOcean的介绍。 请注意,本教程将仅在您的本地计算机上设置所有内容,并且被认为不适合生产。 例如,我们会将客户端机密存储在iOS应用程序中,您绝对不要这样做。 如果有需求,我们可能会在本教程的其他部分中着重于使整个设置生产就绪。 我们正在开发一个涉及安全性的产品,因此,依靠最佳实践用户身份验证绝对是必经之路。 设置OAuth2通常很麻烦。 ORY Hydra减轻了您实现自己的OAuth2服务器的负担,但仍要求/允许您使用自己的身份提供者。 这使我们感到困惑,哪些身份验证流程的哪些部分需要作为身份提供者的一部分在我们的后端中实现,哪些部分由Hydra提供。 在本教程中,我们将尝试更清楚地说明在开发使用Vapor后端和Hydra作为OAuth2服务器的iOS应用时,每个部件要承担什么责任。 这是我们完成后应用程序的外观: iOS应用 iOS应用程序本质上将非常简单,并且仅具有两个本机屏幕:登录提示屏幕和成功屏幕,向您显示您已成功验证用户身份。 我们将使用AppAuth在应用程序内部处理OAuth令牌。 蒸气后端 蒸气后端将包含用户管理,并且还将作为身份和同意提供者来提供HTML登录和注册屏幕。 同意步骤将自动跳过,因为像这样的第一方应用程序不需要此步骤。 我们可以假设一个想要在我们平台上登录的用户也想要为其数据授予访问权限。 ORY九头蛇 Hydra是一个开放源代码的OAuth2服务器,它通过将用户身份验证(登录,注册)委派给身份提供者(在本例中为Vapor后端)来管理授权流程。 如果成功,它将发出访问令牌,刷新令牌和ID令牌,这些令牌可用于验证后端访问受限数据(即用户个人资料)的请求。 这可能已经令人困惑,所以让我们通过分解设置所需的内容来更好地理解它: iOS应用程序需要了解Hydra服务器的身份验证和令牌终结点(公共API),但是它们完全由AppAuth库管理。 Vapor后端需要有权访问Hydra服务器的管理端点(管理API)以发起和接受登录和同意请求。 Hydra需要知道您的Vapor后端上的登录(或注册)端点和同意端点,以便将身份验证委派给您的身份提供者。 您在Hydra中创建的客户端还需要一个回调URL,以便Hydra在身份验证过程完成后知道重定向到的位置(这是一个自定义URL方案,链接到iOS应用)。 流程示例 让我们看一下用户想要注册帐户时应该发生的交互流程: 请注意,星号前缀的“实体名称”不是实际的类型,仅用于在不同阶段引用同一段代码/数据(例如“ * AuthCallback”,“ * RegistrationInput”等)。 这些图主要作为概述,您可以在本教程系列的整个课程中继续学习。 需要花很多时间,但是请记住,我们只需要实现非虚线字段并设置蓝色的Hydra部分。 在本教程的其余部分中,我们将重点关注后者。 希望您现在对我们将在此处构建的内容有了更好的了解。 现在是时候深入研究实际的实现了。 好吧……不是真的。 由于Hydra已经实现,因此只需使用一些参数启动它,并且您需要为应用程序创建一个客户端。 启动Hydra实例 […]

蒸气3系列I —带控制器的CRUD

苹果公司在2015年将Swift开源后,我感到非常兴奋,因为这不仅意味着将会有更多有趣的功能,而且我们也能够在Linux机器上运行Swift。 更重要的是,后来的版本使我们可以用Swift编写服务器。 当前,有几个不同的服务器端Swift框架,例如Vapor,Perfect和Kitura。 我之所以选择Vapor 3,是因为它快速支持SwiftNIO。 结果,Vapor 3提供了简洁的异步API,这是练习异步编程的绝佳机会。 出于本文的目的,我将演示如何使用Vapor 3构建简单的RESTful端点。 制备 如果尚未安装Vapor,请按照以下说明正确安装Vapor。 安装成功后,我们可以使用Vapor工具箱的new命令生成新的项目文件夹。 蒸气新的CRUDControllers 由于我们不需要工具箱创建的模型和控制器模板,因此请使用以下命令删除“ Models和Controllers文件夹中的所有内容。 cd CRUDControllers rm -rf来源/应用/模型/ rm -rf来源/应用/控制器/ 此外,在尝试构建项目之前,我们应该删除不必要的代码。 首先,打开S ources/App/configure.swift文件,然后删除以下行。 migrations.add(模型:Todo.self,数据库:.sqlite) 其次,转到Sources/App/router.swift文件,然后删除以下几行。 //配置控制器的示例 让todoController = TodoController() router.get(“ todos”,使用:todoController.index) router.post(“ todos”,使用:todoController.create) router.delete(“ todos”,Todo.parameter,使用:todoController.delete) 最后,我们可以使用vapor xcode -y生成Xcode项目文件,此命令将自动打开CRUDControllers.xcodeproj 。 我们可以选择Run方案”,该项目应成功构建。 在创建模型类型之前,在configure.swift内部还需要提到一件事。 在本文中,我们将使用内存中的SQLite数据库,因此我们可以保留默认的提供程序FluentSQLiteProvider和工具箱生成的数据库配置。 模型 最佳实践是在Xcode之外创建文件。 这可以让Vapor工具箱使用的Swift Package Manager确保文件链接到正确的目标。 让我们创建User模型文件,并使用以下命令重新生成Xcode项目文件。 mkdir来源/应用/模型 触摸Sources / App / Models […]

使用Vapor和Fluent创建REST API

斯威夫特很棒。 是的,它已经成熟(现在有了5.0,我们有了ABI稳定性,万岁!)。 您拥有OOP,POP,功能和命令式编程的强大功能。 如今,您几乎可以在Swift中做任何事情。 如果您想成为既了解后端又了解前端的全栈开发人员,那么本文适合您。 用Swift编写的最著名的Web框架是Kitura和Vapor。 Vapor现在是第3版(于2018年5月发布),是开源的,您可以轻松创建REST API,Web应用程序或很棒的网站。 在本教程中,您将学习: 如何开始使用蒸气 创建您的第一个REST API 如何使用Fluent ORM Framework 如何在Fluent中将1:M和M:M db关系转换为父子或兄弟姐妹关系 将您所学的内容应用到真实的案例中 如果要跳过这一部分,可以在GitHub上找到整个项目: radude89 / footballgather-ws 通过在GitHub上创建一个帐户为radude89 / footballgather-ws开发做出贡献。 github.com 先决条件 对于本教程,您将需要: Xcode 10.2 迅捷知识 REST API的基础知识 Swift Package Manager的一些知识 入门 首先,您需要从Mac App Store安装Xcode。 您可以使用brew安装Vapor Toolbox。 这很有用,因此我们可以为常见操作运行命令行任务。 /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 冲泡水龙头/自来水 冲泡安装蒸气/抽头/蒸气 您准备好出发了! 足球聚会-iOS应用示例 FootballGather是一个演示项目,供朋友们聚在一起并尽可能快地参加足球比赛。 您可以通过查看以下样机(用Balsamiq创建)来想象客户端应用程序: 特征: […]

服务器端Swift-快速入门

罗伯特·巴兰 ( Robert Baran) 构建Swift Web应用程序使您可以重用已有的技能。 但是,如果您不是iPhone mac开发人员,也可以从头开始。 本文向您展示了最受欢迎的服务器端Swift框架,并让您进入使用Swift的更快,更安全的API的世界。 Swift于2014年发布。从那时起,它已成为iOS和macOS开发的流行解决方案。 由于Swift是开源的,人们开始使用它。 有很多尝试寻找Swift的其他用法。 事实证明,它们是服务器端的理想之选,同时比其他语言更快,更安全。 该过程的下一步是将Swift应用于服务器端开发。 在这里,重要的是要提到Swift可以在macOS,Linux甚至Windows上编译。 此外,一些框架允许开发人员创建云应用程序。 在Server-Side Swift发布之后,我感到有快速浏览它的冲动。 当时真的很难分辨它是否已准备好用于商业用途。 现在,当我看着它时,我会说它足够稳定。 因此,让我们尝试比较最受欢迎的框架。 就个人而言,我建议您在尝试每个框架之前,甚至选择最适合您的框架,它们之间会有细微的差异。 当前,最受欢迎的服务器端Swift框架是Vapor,Perfect和Kitura。 还有其他一些工具,例如Zewo和NozelIO,但是它们并不那么受欢迎,但这并没有失去它们的价值。 事实上,我调查了每个框架,我的结论是:Perfect and Vapor。 几年前,当Server-Side Swift对我来说还很陌生时,我并不相信这将是针对特定后端的最佳语言。 为什么? 因为它像其他所有后端解决方案一样工作,并且没有什么特别的特殊之处使其变得特别,但是对于我作为IOS开发人员而言,它仍然使我处于全栈状态。 我知道Java和JS,在我看来,掌握最新技术非常好,主要是因为它们使我们成为了更好的开发人员。 我还没有找到太多有关它的教程或文章。 当然,关于Java或JS的数量并不多。 因此,您必须自己创建很多东西。 我认为,Swift也比其他语言快。 如果您想将其与其他产品进行比较,这是基准服务器端swift框架vs nodeJS。 SPM — Swift Package Manager —管理发行版Swift代码,与构建系统集成在一起,以自动执行在Mac和Linux上运行的下载,编译和链接依赖项过程。 XCode — Apple IDE,用于编译和调试Obj-C和Swift代码。 AppCode — Jetbrains IDE,用于编译和调试Obj-C和Swift代码。 其他文本编辑器,如括号,VS代码,Sublime等。+ SPM 对于框架,还有很多非常特定的工具,在快速概述中,我将进一步介绍这些工具。 […]

蒸气3与Mongo DB

任何新项目都始于一个伟大的想法。 然后,您必须查看架构。 对于好主意,您应该期望获得更大的规模和大量的数据。 因此,您应该使用NoSQL数据库。 对于我的最新项目,我认为最简单的方法是使用MongoDB。 因此,我开始设置我的项目,并在蒸气3的文档中寻找如何连接到mongo数据库的起点。 令人惊讶的是,蒸气3的文档为空empty。 但这并没有阻止我。 在不同的领域进行了一些研究,我发现有2个解决方案,其中一个是Mongokitten,这似乎是蒸气2最常用的解决方案,另一个是MongoDB本身的mongo db swift驱动程序。 因此,我感谢MongoDB为构建友好的本机Swift驱动程序所做的努力,该驱动程序支持Swift Package Manager的使用。 我认为这可能非常适合我的服务器端swift项目。 我决定使用MongoDB的驱动程序。 那么如何开始呢? 首先,我必须将依赖项添加到我现有的蒸气3项目中。 为此,我必须将mongo驱动程序的url和版本添加到Package.swift文件中并获取新的源代码。 让包=包( 依赖项:[ … // Mongo Db .package(网址:“ https://github.com/mongodb/mongo-swift-driver.git”,来自“ 0.0.7”) ], 目标:[ .target(name:“ App”,依赖项:[“ MongoSwift”,“ Vapor”]), … ]) 这很容易,但是现在我需要知道如何在蒸气框架内使用它。 我在mongo swift驱动程序项目的示例区域中找到了起点。 通过此代码示例,我可以设置数据库连接并将客户端实例注册为蒸气框架运行时中的服务。 为此,必须扩展Mongo Client,以便将服务协议应用于该协议。 //configure.swift //准备好mongo收集服务 public func configure( _ config: inout Config, _ env: inout Environment, […]

引入蒸气云—快速可靠的云服务

自从Vapor框架启动以来,我们一直热切关注所有使用Vapor构建的出色应用程序,以及社区的所有贡献-我们非常喜欢它! 创建Vapor的目标是使Web开发更快,更安全,更重要的是更轻松 。 尽管我们相信Vapor作为Web框架可以实现此目标,但我们经常看到托管可能是构建下一个重要事物的棘手部分。 这就是为什么今天我们很高兴宣布蒸气的新伴侣:蒸气云。 Vapor Cloud是由Vapor为Vapor构建的快速,可靠且功能丰富的云服务。 Vapor Cloud的目标是使托管应用程序像使用Vapor一样容易。 我们已经创建了无缝的体验,可以直接集成到您已经使用的Vapor Toolbox CLI中。 仅需一个命令($蒸气云部署),您就可以将应用程序部署到云中。 从今天开始,Vapor Cloud的Beta版向公众开放。 您可以在https://dashboard.vapor.cloud/signup上进行注册。 工具箱和仪表板 通过工具箱的新Beta版,您可以创建项目,应用程序,环境,实时运行命令,实时尾部日志等等。 您可以使用Homebrew和APT安装工具箱的beta版本。 请访问我们的文档,以获取有关入门的更多信息https://docs.vapor.cloud/toolbox/install/ 。 除了工具箱之外,您还可以使用我们的仪表板,在这里您还可以查看统计信息,cronjob日志等。 简单的定价 蒸气云建立在Amazon Web Services的顶部,并且收费类似。 您按小时支付使用的资源(托管,数据库,缓存等)。 这意味着如果您只需要在几个小时内扩展Web应用程序即可满足更高的需求,则只需为这些时间支付额外费用。 当然,我们还提供免费计划以试用Vapor Cloud。 它每个月最多包含20,000个请求,之后您可以根据需要选择升级到其中一项付费计划。 所有蒸气云计划(甚至免费)都包括所有仪表板和项目管理功能。 这意味着您可以邀请整个团队,监视应用程序的资源,使用您自己的域,甚至还可以附加免费的“让我们加密SSL / TLS”证书。 充满特色 蒸气云的目标是提供蒸气应用所需的所有云托管功能。 由于蒸气云是专门为蒸气而构建的,因此配置这些附加功能非常简单。 实际上,实际上没有任何配置。 事情就可以了。 零停机时间部署 您的应用程序即使在部署期间也将保持在线状态。 蒸气云是从头开始构建的,以实现高可用性。 数据库 蒸气云提供MySQL,PostgreSQL和MongoDB数据库。 这些数据库的凭据在部署后会自动向您的Vapor应用程序公开。 监控方式 您可以通过Vapor Cloud仪表板轻松跟踪应用程序的流量,平均响应时间和内存使用情况。 永久文件存储和CDN 所有Vapor Cloud应用程序均可免费访问S3存储桶以上传和存储文件。 此外,可以使用我们的CDN API即时调整大小或裁剪上传的图像。 克伦·乔布斯 […]

带有蒸气2的服务器端Swift(第1部分)

在2015年Swift开源之前,我曾尝试用Node.js编写一个简单的RESTful API服务器。 但是,由于我对Javascript语法和后端开发不熟悉,所以没有足够的时间来深入研究。 如今,有几种不同的服务器端Swift框架,例如Vapor,Perfect和Kitura。 作为iOS开发人员,这是拓展后端开发视野的好机会。 根据其GitHub页面,Vapor是Swift最常用的Web框架。 它为您的下一个网站,API或云项目提供了精美而易用的基础。 更重要的是,raywenderlich.com网站上有一系列免费教程。 这些教程为我提供了如何使用Vapor构建API服务器的基本概念,即使它们是在先前版本中完成的。 谢谢雷! 在本文中,我将演示一个简单的RESTful API服务器,该服务器将处理三种模型: Lesson , Teacher和Student 。 基本上,我们需要以下端点: /{models} :通过GET请求获取所有模型对象,或者通过带有JSON正文的POST请求创建新的模型对象。 (只需将{models}替换为课程,教师和学生。) /{models}/id :通过GET请求获取特定的模型对象,通过DELETE请求删除一个模型对象,或通过带有JSON正文的PATCH请求更新现有模型对象。 在我们开始编码之前,有几种必要的配置。 首先,按照Vapor网站上的说明正确安装Vapor,然后使用vapor new your_project_name –template=api创建一个新项目。 其次,在该项目中,我选择使用PostgreSQL作为数据库服务器,因此有必要在Macbook上安装PostgreSQL,并将蒸气的PostgreSQL提供程序添加到我的项目依赖项中。 启动PostgreSQL服务器后,按如下所示打开并修改Package.swift文件。 let package = Package( // … dependencies: [ .Package(url: “https://github.com/vapor/vapor.git”, majorVersion: 2), .Package(url: “https://github.com/vapor-community/postgresql-provider.git”, majorVersion: 2) ], // … ) 然后,在目录Config/secrets下创建一个名为postgresql.json的新文件,并将以下代码片段添加到postgresql.json文件中。 { “hostname”: your_host_address, “user”: your_username, […]