您是否有兴趣构建高度可扩展和性能的服务器端应用程序?您是否考虑过使用Node.js,这是一个广泛使用且稳健的运行时环境?最近,开发人员更喜欢将graphQl与node.js一起使用,以比传统的REST API更快,更灵活的API。
要充分利用GraphQl的潜力,必须拥有一个可靠的框架,该框架可以处理增长的代码库和对象关系映射(ORM)工具的复杂性,从而简化了数据库交互。 Nestjs和Prisma是一对伟大的夫妇,可以完全提供这一点。 Nestjs是一个专门设计用于构建Node.js应用程序的功能强大的框架,而Prisma是一个ORM工具,可在Node.js中提供类型安全的API。
本文旨在提供有关使用Nestjs和Prisma构建Node.js GraphQl API的见解,同时解决有关这些技术的一些最常见的问题。
你们中的许多人很可能精通创建传统的node.js应用程序。但是,本文将介绍使用Nestjs和Prisma构建Node.js GraphQl API的独特方法,利用Amplication平台进一步简化了开发过程。但是在采取行动之前,让我们熟悉上述技术。
GraphQl
GraphQL是一种开源查询语言,它提供了一种更有效,更灵活的方式来请求和操纵服务器数据。在REST API中,用户必须向不同的端点发送多个请求才能检索各种数据。相比之下,GraphQL允许用户构建定义所需数据的确切形状和结构的查询,从而消除了数据的过度提取和不及格。
Prisma
Prisma是一个开源数据库工具包和ORM,可提供工具和功能,以简化应用程序中的数据库访问。它摘要数据库特定的详细信息,使开发人员可以使用多个数据库系统(例如PostgreSQL,MySQL,SQLITE和SQL Server),而无需为每个数据库编写特定代码。
。不是
NestJS是一个开源框架,用于使用Typescript构建有效,可扩展和可维护的服务器端应用程序。 Angular启发Nestjs并使用打字稿功能,例如强键入,装饰器和依赖注入,为构建服务器端应用程序提供了强大的体系结构。
放大
Amplication是一个开源平台,它会根据预定义的数据模型自动生成API和客户端。它通过最大程度地减少重复的编码任务和样板代码来简化开发过程,从而使开发人员能够更加有效地构建后端服务。
在本文中,我将结合放大,Prisma,GraphQl和Nestjs的功能,以创建一个简单的node.js服务与三个实体来管理我的博客。
步骤
步骤1-创建一个新项目
登录到放大仪表板后,您将看到一个在左下角创建新项目的选项。它将打开模式输入项目名称,然后单击创建新项目按钮。
步骤2-创建新服务
然后,单击添加资源按钮,然后从下拉列表中选择选项。
它将将您重定向到新的向导以配置新服务。首先,您需要输入该服务的名称。
然后,您想获取生成的代码的connect to a GitHub repository。
接下来,您需要在GraphQL和REST之间进行选择。由于本文是关于GraphQl的,因此我仅启用了GraphQl API和Admin UI选项。
接下来,您可以根据项目和团队要求在MonorePo和Polyrepo之间进行选择。对于此示例,您可以将默认设置保持原样。
接下来,您必须在PostgreSQL,MongoDB和MySQL之间进行选择。
此外,如果您愿意,放大可以自动为数据库模型生成实体。我们将稍后为我们的用例定义数据模型,因此请选择“空”。
最后,您可以为服务提供身份验证。如果您选择具有验证模块,放大将自动为您的服务生成身份验证代码。
创建服务后,您将看到下面的窗口。单击为我的服务创建实体选项以开始为新服务创建实体。
步骤3-创建实体
默认情况下,放大会创建一个用户实体来管理与您服务相关的用户。您可以通过单击“实体”选项卡中的添加实体按钮来轻松创建新实体。
首先,您需要输入实体名称。
然后,您将获得一个像下面的窗口一样,您可以在其中为实体创建字段。对于每个字段,您都可以配置诸如唯一性,是否需要或不使用的属性,可搜索性,数据类型,最大长度等。
创建模型后,您可以访问放大UI并查看它们,以确保根据您的期望正确生成它们。如前所述,我为我的 Blogservice : Blog ,出版和作者。 P>
步骤4:提交更改
创建了所有实体后,单击提交更改并构建按钮以将更改与GitHub repository同步。
步骤5:获取源代码
现在,您可以通过单击打开GitHub 按钮,然后将源代码克隆到本地计算机。
总结了这一过程。扩增已成功地为您生成了所有必需的文件和样板代码。例如, amplication-example/apps/blog-service/src/blog/base 文件夹包含博客模型,dtos,graphql resolver,服务和测试。
现在您可以使用VSCODE打开代码,并自定义。
步骤6:安装NPM软件包
准备就绪后,您必须使用npm install
命令安装NPM软件包和依赖项。
步骤7:启动数据库的Docker容器
启动Docker容器以使用以下命令运行数据库。
npm run docker:db
然后使用PRISMA在数据库上创建应用程序架构。您可以使用以下迁移命令:
npm run prisma:generate
npm run db:init
步骤8:运行应用程序
最后,您可以使用npm run start
命令运行该应用程序。它将在http://localhost:3000
启动服务器。
另外,您可以通过http://localhost:3000/graphql
访问GraphQl Server。
有趣的事实
关于Amplication blog的一个有趣的事实是,它的后端完全是使用放大本身构建的。通过利用我们自己的博客放大,我们不仅展示其潜力,而且还从其效率和提高生产力的功能中受益。值得一提的是,GITHUB上可以在Github上公开使用Amplication Blog后端的整个代码库,从而使开发人员可以探索,学习和为其开发做出贡献。您可以在https://github.com/amplication/blog-server上找到博客服务器的代码存储库。我们相信透明度和协作,并使该代码可用强调了我们致力于培养开源社区的承诺。随意深入研究代码库,并亲眼目睹放大如何为我们的博客的后端提供动力。
结论
总而言之,放大大大简化了使用nest.js和prisma生成的GraphQl API。只需几个步骤,开发人员就可以快速为多个数据模型生成所有必要的文件。
放大是一种免费的开源工具,可以通过创建功能齐全的node.js服务来加速开发。除了Nest.js和Prisma外,它还支持其他几种技术,例如PostgreSQL,MySQL,MongoDB,Passport,Jest和Docker。因此,我鼓励您到try Amplication并体验其在您的开发工作流程中所产生的差异。
常见问题解答
Q1:什么是Prisma?
prisma是一种被广泛认可的ORM(对象相关映射)工具,可平稳地集成Nestjs。使用Prisma,开发人员可以轻松地使用简单的语法创建数据库模式,并构造用于查询数据库的类型安全API。此外,Prisma有助于编写数据库查询并解决Nestjs应用程序中与数据库相关的错误,从而使其成为开发人员的有效工具。
Q2:Nestjs使用GraphQl吗?
的确,Nestjs对GraphQl具有内置支持。它提供了两种使用GraphQL:Code-First和架构优先的方法来构建应用程序的方法。代码优先的方法采用装饰器和打字稿类来生成GraphQl架构,而架构优先的方法则使用GraphQl SDL(架构定义语言)。
Q3:GraphQl与静止有何不同?
GraphQL和REST是构建API中最受欢迎的两种方法。但是,它们之间存在一些显着差异。您可以找到GraphQl和REST here的详细比较。