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

大带宽_数据库表单_免费1年

小七 141 0

专属云服务器_购买_云存储安全方案

DR:GraphQL自2015年公开发布以来,已经从一种新技术发展成为一种成熟的API规范,被全球的小型和大型科技公司所使用。使用类型系统,它允许您使用简单易懂的格式查询和更改数据。尽管许多在线文章演示了如何使用节点.js如何处理认证和授权往往被忽视。本文将展示如何构建GraphQL服务器并使用Auth0保护它。先决条件在继续阅读本教程之前,您需要确保节点.js在你的机器上安装了npm。如果您还没有安装这些,可以在这里找到安装说明。当然,您需要事先了解JavaScript。此外,您还需要Auth0授权服务器来实现真实的身份验证和授权。因此,我邀请您在这里注册一个免费Auth0帐户。什么是GraphQL?在本教程中,您将使用节点.js它使用Auth0来处理身份验证和授权。但是要构建这个服务器,返利app,您需要进一步了解什么是GraphQL以及它是如何工作的。如果您已经熟悉GraphQL及其原理,您可以立即进入本教程的下一节。GraphQL可以最好地描述为一种api查询语言,它的工作原理是"询问你所需要的,得到它"。使用GraphQL,你可以将包含操作(查询、突变或订阅)的所谓文档发送到GraphQL服务器,服务器的响应将遵循这些文档的相同结构。这三种类型的操作都使用GraphQL查询语言来返回相同的可预测格式。而且,所有操作都被发送到同一个端点,不管您试图查询或改变什么数据。包含查询操作的此类文档的示例如下:查询{人员(编号:12){名称年龄}}此查询用于从GraphQL服务器检索id为12的人员,并将返回具有相同结构的JSON输出。对于上面的示例,将返回以下(模拟)数据:{"数据":{"人":{"name":"约翰·多伊",web云服务器,"年龄":43岁}}}与restapi不同,这意味着用户可以通过GraphQL文档而不是API本身来控制数据响应的格式。如何构造这些文档可以在接收和处理这些文档的graphqlapi的模式中找到。模式是由类型构成的,它定义返回的数据是什么样的,以及可以发送哪些操作—如前一文档的示例模式所示:类型人{身份证:身份证名称:字符串年龄:内景}类型查询{人(id:Int):人}根据这个模式,您可以发送一个查询来检索具有标识符id的person,并请求person类型的每个字段。如前所示,此查询的输出将遵循查询的结构,因此遵循Person类型的结构。因此,字段name和age的数据将始终与上述模式中定义的类型一起返回。对象类型(如Person)和内置标量类型(如String)之间的层次区别在于,第一个对象类型可以用于包含其他字段。如前所述,对于模式中的每种类型的操作,文档只被发送到一个(通常称为)/graphql端点。即使您在文档中定义了关系(本教程后面将要做的事情),也会使用相同的端点来检索这些数据。与restapi相比,这也是一个明显的优势,因为它们通常要求您向服务器上的不同端点发送多个请求以收集关系数据。使用构建GraphQL服务器节点.js在本节中,您将使用节点.js,它使用来自模拟MongoDB实例的数据。在下一节中,我们将使用JWTs和Auth0对用户及其发送的请求进行身份验证和授权。使用Express创建GraphQL服务器使用Express,您可以轻松创建节点.js具有有限代码的服务器,其性能足以充当GraphQL服务器。在创建Express服务器之前,需要在计算机上创建一个新项目。通过运行以下命令从终端创建新目录开始:mkdir auth0 graphql服务器然后,移动到这个目录中,并使用以下命令使用npm启动一个新项目:cd auth0 graphql服务器npm初始-y最后一个命令将在目录auth0graphqlserver和一个新的包.json文件。您还可以执行命令npminit而不使用-y标志,这要求您回答几个问题来设置项目,例如名称、作者等。现在已经创建了初始项目,可以安装用于构建GraphQL服务器的包:npm安装express express graphql graphql graphql这些包是express和graphql本身,以及使您的express服务器与graphql一起使用的express graphql中间件。此外,大数据与云计算,这些软件包的所有依赖项都已安装,从终端的输出中可以看到。运行GraphQL服务器的实际代码必须添加到此项目的新文件中,您可以在名为src的新目录中创建该文件。要创建此目录和此文件,可以运行下面的命令或使用首选的文本编辑器或IDE。mkdir型触摸src/索引.js然后,将以下代码复制并粘贴到该文件中://src公司/索引.jsconst express=要求("express");const graphqlHTTP=require("express graphql");const{buildSchema}=require("graphql");//使用GraphQL模式语言构造模式const schema=构建模式(`类型查询{你好:字符串}`);//为架构字段提供解析程序函数常量解析程序={你好:()=>"你好,世界!"};const app=express();应用程序使用("/graphql",数据与大数据技术,图形QLHttp({模式,淘客机器人,rootValue:解析程序}));应用程序侦听(4000人);控制台.log(`