云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

文件存储_米内数据库_9元

小七 141 0

对象云存储_阿里云_greenplum数据库

DR:在本文中,您将学习如何使用节点.js、Express和Auth0。你将从头开始,搭建一个新的节点.js项目,返利微信,然后您将完成构建安全API所需的所有步骤。您可以在GitHub存储库中查看本文中开发的完整代码。"学习如何使用节点.js、Express和Auth0。"在推特上留言先决条件要继续阅读本文,您需要事先了解JavaScript。如果您以前从未使用过JavaScript(即使是用于前端开发),那么您可能无法很好地理解这篇文章,首先了解它可能是有意义的。如果您有JavaScript的使用经验,但是您没有使用节点.js,别担心,你在这里不会有困难的。虽然最好能了解一下节点.js,您将看到本文中解释的代码和概念并不复杂。除此之外,你还需要节点.js在你的机器上安装了NPM。如果您没有这些,请按照这里的说明操作。你要建造什么如前所述,在本文中,您将从头开始(即,从一个空目录),然后完成构建安全的restfulapi所需的所有步骤。您将构建的API将允许客户端(第三方应用程序)发出操作资源的请求。在本例中,资源将表示用户将创建、检索、更新和删除的广告(如广告中的产品或服务)。如果您不知道什么是RESTful api,或者不知道这个术语代表什么,请看一下restfulapi的简要定义和解释:restfulapi是一种应用程序编程接口(API),它使用诸如GET、PUT、POST和DELETE等HTTP动词来操作数据。restfulapi也被称为restfulweb服务,它基于representationalstatetransfer(REST)方法,一种允许开发人员操作数据的架构风格。有关详细信息,请查看以下资源:代表性状态转移理查森成熟度模型构建和保护restfulapi现在您已经知道要创建什么以及先决条件是什么,返利app开发,现在是开始构建应用程序的时候了。首先,打开一个终端,将其移动到通常创建项目的目录下,然后在那里创建一个新目录:mkdir express ads应用程序接口然后,移到这个新目录,使用npm构建一个新项目:npm初始-y上面的命令将使用一些默认属性来构建项目。如果在文本编辑器或IDE(如visualstudio代码或WebStorm)中打开此目录,企业应用开发平台,您将看到您发出的npm命令创建了一个名为包.json. 打开此文件,您将看到以下内容:{"name":"快捷ads api","version":"1.0.0","说明":"","主":索引.js","脚本":{"test":"echo\"错误:未指定测试\"&&exit 1"},"关键字":[],"作者":"","license":"ISC"}现在,这个文件很短,没有那么多有趣的信息(它只公开一些属性,比如项目名称、版本和描述)。但是,当您开始向您的项目添加依赖项时,趋势是该文件将增长并变得更加有趣。接下来,您将在项目根目录中创建一个名为src的新目录:mkdir型这里的想法是将所有源代码(即JavaScript文件)放在这个目录中。因此,大数据时代的特点,在创建这个目录之后,创建一个名为索引.js在其中,并添加以下代码://./src公司/索引.js控制台.log("你好,世界!");保存此文件后,您可以返回到终端并发出以下命令来测试它(确保您位于项目根目录下):节点src如果一切正常,你会看到"你好,世界!"在你的终端上打印出来的。创建您的第一个Express API现在,您创建的项目只是记录一条静态消息。因为这不是很有用,建好你的"你好,世界!"应用程序节点.js,您可以开始专注于创建restfulapi。为此,首先需要安装一些依赖项。因此,前往您的终端并发出以下命令:npm安装身体分析器cors express helmet morgan此命令将在项目中安装五个依赖项:body parser:您将使用此依赖项将传入请求的主体转换为JavaScript对象。cors:您将使用这个依赖项来配置Express以添加头,声明您的API接受来自其他来源的请求。这被称为跨源资源共享(CORS)。快报:这是速递图书馆。helmet:这个库通过定义各种HTTP头来帮助保护expressapi。morgan:这个库为您的expressapi添加了一些日志记录功能。注意:在发出上面的命令之后,您将注意到您的项目中有两件事。首先包.json文件将包含一个名为dependencies的新属性以及上面所有的库。这就是NPM如何知道您的项目需要什么依赖关系。其次,您会注意到一个名为package的新文件-锁定.json在项目根目录中。这个文件帮助NPM确定您在开发时使用的确切库是什么,因此它在任何地方都使用相同的库(例如,在其他环境中)。当NPM完成安装这些依赖项(可能需要几秒钟时间,具体取决于您的internet连接),您可以打开索引.js文件,并将其代码替换为以下代码://./src公司/索引.js//导入依赖项const express=要求('express');const bodyParser=require('body-parser');const cors=要求('cors');const helmet=需要("helmet");const morgan=要求('morgan');//定义Express应用程序const app=express();//定义用作数据库的数组(临时解决方案)常数ads=[{title:'你好,世界(再次)!'}];//添加头盔以增强API的安全性应用程序使用(头盔());//使用bodyParser将JSON主体解析为JS对象应用程序使用(bodyParser.json());//为所有请求启用CORS应用程序使用(cors());//添加morgan来记录HTTP请求应用程序使用(摩根("合并");//定义一个端点以返回所有广告应用程序获取('/',(请求,响应)=>{回复发送(广告);});//启动服务器应用程序侦听(3001,()=>{控制台.log("监听端口3001");});此文件的新版本首先导入刚才安装的所有依赖项,然后创建和配置一个新的Express应用程序(const app=Express()),最后使该应用程序侦听端口3001(应用程序侦听(3001,…)。除此之外,本规范还定义了两个重要事项:一个名为ads的数组,临时用作内存中的数据库(您将很快替换它);以及一个端点,它监听httpget请求,当触发时,返回ads数组的所有内容。注意:上面的代码片段包含可以帮助您理解每一行的注释。如果您想了解更多有关正在使用的中间件的信息(例如,关于helmet、bodyParser、cors和morgan),请参阅他们的官方文档。更新此文件后,可以从项目根目录再次发出node src。然后,在另一个终端中,您可以使用curl发出一个HTTP请求来测试您的API:卷曲:3001个/注意:如果没有显式配置动词(通过-X参数),curl命令将发出httpget请求。如果您愿意,您还可以使用图形化的HTTP客户机,如失眠或邮递员。例如,下面的屏幕截图显示了向expressapi发出请求后失眠的情况。无论您决定如何发出请求,在收到请求后,应用程序都会将此请求委托给应用程序获取("/",物联网学什么,…)终结点。然后,根据定义,端点将向客户端发回以下响应(即ads数组):[{"title":"你好,世界(再次)!"}]集成Express和MongoDB在数据库方面,最流行的选择是节点.js开发人员是(目前为止)MongoDB。此数据库引擎允许开发人员使用灵活的文档数据模型,该模型在节点.js应用程序。正如您将在本文中看到的那样,从节点.js应用简单高效。在学习如何让expressapi操作MongoDB之前,您需要一个数据库实例。为此,您可以选择在您的机器中安装MongoDB,在容器中运行它,或者使用云提供商MongoDB-Atlas。但是,为了简化这个过程,您将使用一个名为mongodb memory server的包,该包以编程方式启动mongodb实例,以便在开发期间进行测试或模拟。这个库的优点是,默认情况下,它将数据保存在内存中。另外,您将安装官方的mongodbnpm包,使您的应用程序与这个内存数据库交互。所以,回到您的终端,使用npm安装这些软件包:npm i mongodb内存服务器mongodb安装它们之后,在src目录中创建一个名为database的新目录,并在其中创建一个名为mongo.js网站. 在该文件中,添加以下代码://./src/数据库/mongo.js网站const{MongoMemoryServer}=require('mongodb-memory-server');const{MongoClient}=require('mongodb');让数据库=null;异步函数startDatabase(){const mongo=new mongommoryServer();const mongoDBURL=等待mongo.getConnectionString();const connection=等待MongoClient.connect(mongoDBURL,{useNewUrlParser:true});数据库=连接.db();}异步函数getDatabase(){如果(!数据库)等待startDatabase();返回数据库;}模块.导出= {获取数据库,启动数据库,};如您所见,这个文件导出了两个函数。一个用于初始化内存数据库(startDatabase),另一个用于返回对它的引用(getDatabase)。在pl里有那个吗