Tag: 蒸气

使用Vapor 2和PostgreSQL持久化数据

这是正在进行的“蒸气入门”系列的第3部分。 在本教程中,我们将结合到目前为止所学的知识,使用我们保存到数据库中的数据来创建一些网页。 在本教程中,我们将使用开源关系数据库PostgreSQL。 如果您对使用数据库或编写SQL代码不完全熟悉,请不要担心。 Vapor附带了Fluent,Fluent是一种Swift ORM(对象关系映射工具),它使数据库的使用变得异常简单。 虽然学习SQL和关系数据库很有帮助,但您会在本教程中注意到并不需要完成。 对于今天的教程,我们将制作一个简单的博客应用程序。 对于本教程,我们将使其保持简单,因此我们将不包括任何身份验证。 好吧,让我们潜入。 首先,让我们开始创建一个新的Vapor项目 步骤1 —生成一个新的Vapor项目 打开您的终端并输入vapor new blogger 第2步-生成 .xcodeproj 项目文件 在终端中,输入cd blogger && vapor xcode这将带我们进入blogger文件夹并生成一个xcode项目文件 步骤3 —安装自制软件 Homebrew是一个软件包管理器,可以帮助开发人员在其MacOS设备上安装工具。 复制并粘贴以下代码以安装Homebrew /usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)” 第4步-安装Postgresql 在终端类型brew install postgresql 我已经安装了Postgresql,所以您的终端看起来与我的略有不同。 第5步–运行PostgreSQL 要启动Postgresql,请在新终端中运行以下命令。 postgres -D / usr / local / var / postgres 输入此命令后,您应该看到以下内容: 现在您已经启动并运行了Postgresql,现在需要为全新的Blogger应用创建数据库。 如果您对SQL不太满意,请不要担心,我们不会大量使用它。 第6步-创建一个新数据库 在终端中,在新的终端窗口中键入psql以打开PostgreSQL控制台。 […]

如何在Xcode 10中制作Vapor 3 Swift Playground

当您想学习新东西时,更好的学习机会就是尝试它。 这来自我们的童年。 Vapor是Swift编程语言的框架,旨在简化服务器应用程序。 该框架使用现代的编程模式,并利用了Apple的低级非阻塞和事件驱动IO库,称为SwiftNIO。 SwiftNIO&Vapor使用并发编程技术以及诸如Future和Promise之类的抽象。 为了深入理解,我需要触摸它。 因为如此简单,我决定制作Swift游乐场! 让我们先安装Vapor。 您可以使用自己的文档进行此操作: macOS –蒸气安装 docs.vapor.codes SwiftNIO被安装为依赖项。 让我们创建沙盒项目: $ vapor new Sandbox $ cd Sandbox && vapor xcode vapor将创建初始项目结构,并将生成.xcodeproj文件。 最后,它将询问您是否打开Xcode。 点击“ y” 您必须看到类似以下内容: 看起来不太友善,是吗? 让我们打开Project Navigator: 现在,更清楚了什么是内幕。 让我们去游乐场玩吧。 首先从项目中创建Xcode工作区: 称之为沙箱。 现在,在Workspace内部但在Sandbox项目外部创建Playground。 最小化Sandbox项目文件夹,然后右键单击Project导航器中的任何空白点: 选择“新建文件”,然后在弹出的窗口中选择“空白操场”。 留下MyPlayground作为名称或选择自己的名称: 瞧! 现在我们必须导入我们的模块:Vapor和ORM,它们在此模板项目FluentSQLite中被调用。 在将模块导入操场之前,我们必须先构建它们。 我们开始做吧: Xcode将构建运行方案,该方案还将构建所有基础依赖项。 现在我们可以将所需的模块导入到我们的游乐场。 这样做并按Run(运行)—代码左侧的“播放箭头”: 底部有错误。 该怎么办? 导致此错误的原因是,依赖项中存在的C框架(例如CNIOAtomics)不在Xcode的Framework系统文件夹中。 Xcode保留有关头文件的信息,并根据此信息使其成为内部符号查找表。 该文件夹的位置是$(PLATFORM_DIR)/Developer/Library/Frameworks,在我的系统(Mojave 10.14.1)中,该文件夹代表/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks 我们必须为所有C模块依赖项创建伪造的框架文件夹。 让我们从CNIOAtomics开始: […]

蒸气3入门

Vapor是iOS社区中领先的服务器端Swift框架,它使Swift开发人员可以将其现有的Swift技能带到云中。 在蒸气1和蒸气2成功之后,蒸气团队通过创建蒸气3框架使它变得更好。 在撰写本文时,Vapor 3尚未发布,但足够稳定,可以在应用程序中使用。 在这篇文章中,我将介绍如何开始使用Vapor 3。 安装蒸气3 Vapor文档提供了有关如何安装Vapor 3框架的详细说明。 我不再重复安装过程,而是直接链接到此处的过程。 你好蒸气 安装Vapor后,下一步是初始化Vapor项目。 可以在终端中通过运行以下命令来完成此操作。 蒸气新的你好蒸气 这将创建一个新的“ hello-vapor”项目文件夹,其中包含使用Vapor入门的所有默认文件。 跳到hello-vapor文件夹并运行以下命令。 蒸气Xcode 该命令将为您的Vapor项目创建一个Xcode项目。 该过程完成后,您将为hello-vapor项目获得一个xcodeproj文件。 现在,您只需双击Xcode项目文件即可在Xcode中打开Vapor项目。 在构建应用程序之前,请确保将目标设置为“运行”,并选择“ 我的Mac”作为设备,如以下屏幕截图所示: 构建完成后,运行您的应用程序。 这将在端口8080上启动服务器。在浏览器中访问http:// localhost:8080 / hello,查看正在渲染的hello路由。 恭喜你! 您现在正在使用Vapor框架在服务器上运行Swift。 路由 默认情况下,Vapor在routes.swift文件中添加一些锅炉级别的代码,该代码为您的Vapor项目创建默认路由。 您可以在routes.swift文件中创建自己的路线。 让我们为电影添加一条路线,如下所示: 您甚至可以将不同的路线嵌套在一起,如下所示: 您可以使用“路由参数”的功能,而不是为每种可能的流派创建路由,如下所示: 借助蒸气参数,我们不必为每种类型创建单独的路线。 Vapor还提供了一种简单的方法来访问查询字符串,分组路由等等。我在我的课程“ 使用Vapor 3掌握服务器端Swift ”中对此进行了详细讨论。 您可以使用下面的优惠券代码获得该课程的折扣。 希望您喜欢这篇文章! 编码愉快! 使用Vapor 3掌握服务器端Swift 乌迪米 您是否有兴趣学习如何使用Swift编写完整的后端API? 服务器上的Swift是…的未来。 www.udemy.com

使用Nginx和Supervisor部署基本的Vapor应用程序

本文将指导您完成将简单的蒸气应用程序部署到VPS的过程。 我使用的是数字海洋,但是只要您的实例运行Ubuntu 16.04并且可以通过ssh访问该主机,托管服务提供商就没有关系。 先决条件: 具有ssh访问权限的Ubuntu 16.04实例。 我强烈建议您在继续之前阅读本文。 熟悉终端文本编辑器,例如nano,vi或emacs。 熟悉基本的bash命令。 安装和设置Nginx 通过运行以下命令来安装Nginx: sudo apt-get更新 须藤apt-get install nginx 将规则添加到防火墙以允许端口80上的TCP连接。(仅在启用防火墙的情况下才需要执行) sudo ufw允许’Nginx HTTP’ sudo ufw状态 检查Nginx是否正在运行systemctl status nginx 最后,您可以通过从浏览器向服务器的域或ip发送GET请求来检查nginx是否设置正确。 如果您在下面看到欢迎页面,则说明您已经成功设置了Nginx。 如果您没有看到此页面,请查看此详细教程。 安装和设置蒸气 使用以下命令安装Swift和Vapor。 评估“ $(curl -sL https://apt.vapor.sh)” 须藤apt-get install swift vapor 评估“ $(curl -sL check.vapor.sh)” 如果输出“与蒸气2兼容”,则可以继续进行。 创建一个基本的蒸气项目。 蒸气新你好 注意:如果您有现有的蒸气项目,则可以从github克隆该存储库。 但是请记住,在本教程的其余部分中,请用您的项目名称替换“ hello”。 配置Nginx以将请求转发到Vapor App 更改/etc/nignx/sites-available的default配置文件,使其看起来像以下片段。 服务器{ 监听80 default_server; 听[::]:80 […]

蒸气3系列III-测试

在上一篇文章中,我们实现了两种验证用户身份的方法:HTTP基本身份验证和承载令牌授权。 因此,我们的应用程序仅接受来自经过身份验证的用户的请求。 但是,即使我们的应用程序很简单,我们也应该为端点编写一些单元测试。 测试是软件开发的重要组成部分,编写单元测试使我们能够快速开发和发展应用程序。 为了快速开发新功能,我们希望确保现有功能不会中断,并且拥有完善的测试套件可让我们验证更改代码库时一切仍然正常。 在本文中,我将演示如何为CRUD端点编写单元测试,以及如何在具有Docker的Linux机器上运行测试。 请注意,本文将基于先前的实现。 在Swift中编写应用程序的好处之一是,我们能够使用可爱的Xcode运行测试。 但是,为了使用Xcode运行测试,我们必须事先生成测试目标。 请打开Package.swift并将以下行替换为.target(name: “Run”, dependencies: [“App”]) 。 让我们开始编写Application的辅助方法。 请打开Application+Testable.swift并添加以下代码。 现在,我们可以运行测试用例了,它应该通过了! 然后,我们可以为用于检索User模型的端点编写测试用例。 在UserTests.swift内部,将以下函数追加到testUserCanBeSaved函数下方。 这是整个项目。 让我们回顾一下这个测试过程。 首先,我们生成新的测试目标和相应的文件。 此外,我们编写了Application和User模型的辅助方法,以使我们的测试用例简明易懂。 其次,我们使用辅助方法编写每个端点的测试用例,并使用Xcode运行测试。 最后,我们使用Docker在Linux环境上运行测试用例。 测试是软件开发的重要组成部分,并且编写单元测试并使其尽可能自动化是有益的。