nodejs数据库操作框架

nodejs postgresql 根据所传数据动态生成数据库表和字段 nodejs怎么操作数据库_java

“粉红车辆的缩时摄影灯附近的建筑物”,由埃姆雷卡拉塔什上Unsplash

NodeJS最常用于Express框架。 NodeJS还使用了许多其他外部库。

这些框架和库与NodeJS一起使用的原因是使开发变得更加容易和快捷。

在处理任何实际项目时,最好在需要的地方使用框架和库来加快开发速度😄

就是说,在这篇文章中,我将展示如何在不使用Express框架或任何其他外部库的情况下,使用NodeJS构建Simple REST API。 本文将仅使用NodeJS本身提供的那些功能。

这样做的原因是为了展示如何在没有框架和库的情况下使用NodeJS。 同样,这将为NodeJS的工作方式提供一个更好的主意😄

前提条件

从https://nodejs.org安装NodeJS

我的github repo中提供了本文的代码。

让我们开始使用代码😄

创建一个名为simple-rest-apis-nodejs-without-frameworks的文件夹。 这将是我们的NodeJS Project文件夹。

进入项目文件夹,并使用npm init将项目变成节点项目。 执行此操作的命令是

cd simple-rest-apis-nodejs-without-frameworks npm init

package.json

运行npm init之后,将在项目文件夹中创建package.json文件。

package.json包含有关项目的信息,例如项目名称,版本,描述等。package.json也是您要添加节点依赖项的位置。 在本文中,我们将没有任何依赖关系,因为我们仅使用NodeJS本身提供的功能。

第一个API

在项目文件夹中创建一个名为server.js的文件。 这将是我们应用程序的起点。

将以下代码复制到server.js中

const hostname = '127.0.0.1'; const port = 3000;

const server = require('./controller.js');

server.listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); });

这段代码实际上依赖于一个名为controller.js的文件,我们将很快添加它。 此代码告诉服务器需要在端口3000和本地主机上侦听

服务器创建在controller.js中完成

controller.js

这是我们将在其中创建服务器并定义其余端点的文件。 创建一个名为controller.js的文件

首先在controller.js中创建一个GET端点

const http = require('http'); const url = require('url');

module.exports = http.createServer((req, res) => {

var service = require('./service.js'); const reqUrl = url.parse(req.url, true );

// GET Endpoint if (reqUrl.pathname == '/sample' && req.method === 'GET') { console.log('Request Type:' + req.method + ' Endpoint: ' + reqUrl.pathname);

service.sampleRequest(req, res); } });

首先导入http和url模块。 这些模块由NodeJS本身提供。

http模块可用于创建Web应用程序。 它支持客户端和服务器操作。

网址模块有助于解析网址

行http.createServer((req, res) => {表示需要创建一个http服务器,其中请求为req,响应为res

module.exports用于将此文件导出为模块。 这就是为什么我们可以使用const server = require('./controller.js');在server.js中导入controller.js的原因const server = require('./controller.js');

可以看出该文件需要service.js ,我们将在后面讨论。

代码const reqUrl = url.parse(req.url, true); 获取请求网址并进行解析,以便我们可以在其上运行一些url函数。

我们将要创建的第一个端点是一个GET端点,端点URL为/ sample

为了进行url路由,我们将使用if else条件

该行if (reqUrl.pathname == '/sample' && req.method === 'GET') {检查所请求的URL是否为/ sample ,还检查请求的类型是否为GET

此获取请求的逻辑位于service.sampleRequest(req,res);中。 这是service.js中定义的函数

service.js

这是实际的api逻辑所在的位置。 创建一个名为service.js的文件。

将以下代码复制到service.js中

const url = require('url');

exports.sampleRequest = function (req, res) { const reqUrl = url.parse(req.url, true ); var name = 'World'; if (reqUrl.query.name) { name = reqUrl.query.name }

var response = { "text": "Hello " + name };

res.statusCode = 200; res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify(response)); };

此代码检查请求URL是否具有名为name的查询参数,并将其存储在name变量中。 如果不存在查询参数,则默认为字符串World

响应状态设置为200 ,响应的内容类型为JSON ,最后使用res.end(JSON.stringify(response));返回res.end(JSON.stringify(response));

由于响应变量是JSON对象,因此我们在返回HTTP响应之前使用JSON.stringify将其转换为字符串

现在我们可以使用以下命令运行应用程序

node server.js

测试中

为了测试端点,请使用postman 。 您可以从这里下载

在邮递员中,选择“获取请求”,然后将网址键入为http://localhost:3000/sample?name=aditya然后点击“发送”

nodejs postgresql 根据所传数据动态生成数据库表和字段 nodejs怎么操作数据库_java_02

该请求的输出如下所示

{ 
 "text": "Hello aditya" 
 } 
 
 
 
 现在输入网址为http://localhost:3000/sample并点击send 
 该请求的输出如下所示 
 
 
 
  { 
 "text": "Hello World" 
 }

第二API

在本节中,我们将构建第二个API,即POST请求。 另外,如果用户点击了一些随机网址,我们将需要指出这是无效的路由。 我们还将在这里添加逻辑。

controller.js

将controller.js中的代码更新为如下所示的代码

const http = require('http'); 
const url = require('url'); 
 
 
 
 
  module.exports = http.createServer((req, res) => { 
 
 
 
 
  var service = require('./service.js'); 
const reqUrl = url.parse(req.url, true ); 
 
 
 
 
  // GET Endpoint 
if (reqUrl.pathname == '/sample' && req.method === 'GET') { 
 console.log('Request Type:' + 
 req.method + ' Endpoint: ' + 
 reqUrl.pathname); 
 
 
 
 
  service.sampleRequest(req, res); 
 
 
 
 
  // POST Endpoint 
 } else if (reqUrl.pathname == '/test' && req.method === 'POST') { 
 console.log('Request Type:' + 
 req.method + ' Endpoint: ' + 
 reqUrl.pathname); 
 
 
 
 
  service.testRequest(req, res); 
 
 
 
 
  } else { 
 console.log('Request Type:' + 
 req.method + ' Invalid Endpoint: ' + 
 reqUrl.pathname); 
 
 
 
 
  service.invalidRequest(req, res); 
 
 
 
 
  } 
 });

发布端点将具有url / test 。 该代码具有检查/ test端点的条件。 / test端点的逻辑将在service.testRequest(req,res);中。 在service.js中

此代码还具有用于无效路由的else条件。 无效路由的逻辑在service.invalidRequest(req,res);中处理。

service.js

将以下代码添加到service.js 。 不要删除service.js中的现有代码。 将此代码添加到现有代码下方。

exports.testRequest = function (req, res) { 
 body = ''; 
 
 
 
 
  req.on('data', function (chunk) { 
 body += chunk; 
 }); 
 
 
 
 
  req.on('end', function () { 
 
 
 
 
  postBody = JSON.parse(body);

var response = { 
 "text": "Post Request Value is " + postBody.value 
 }; 
 
 
 
 
  res.statusCode = 200; 
 res.setHeader('Content-Type', 'application/json'); 
 res.end(JSON.stringify(response)); 
 }); 
 };

对于POST请求,在调用端点时会给出输入POST主体。

在代码中,我们将需要从请求中获取此POST正文。

以下代码执行此操作

req.on('data', function (chunk) { 
 body += chunk; 
 });

该请求以流的形式出现。 此代码获取数据流,并将其追加到body 。

req.on('end', function () {仅在流传输完成并且接收到完整的帖子正文之后才执行。

postBody = JSON.parse(body); 这段代码将输入的帖子主体转换为JSON格式,以便我们可以使用其中的值。

在代码中,我们使用postBody中的 value字段。

响应的设置类似于我们对GET请求的响应方式。

无效请求的逻辑

将以下代码添加到service.js 。 不要删除service.js中的现有代码。 将此代码添加到现有代码下方。

exports.invalidRequest = function (req, res) { 
 res.statusCode = 404; 
 res.setHeader('Content-Type', 'text/plain'); 
 res.end('Invalid Request'); 
 };

对于无效的请求,状态设置为404 ,内容类型设置为text 。 发回的实际内容是无效请求

测试中

去邮递员。 选择请求Type作为POST并输入以下URL http://localhost:3000/test 。

nodejs postgresql 根据所传数据动态生成数据库表和字段 nodejs怎么操作数据库_数据库_03

还要选择Body , raw和application / json ,如图所示

输入Post正文如下

{ 
 "value" : "nodejs" 
 } 
 
 
 
 点击发送邮递员 
 API输出如下 
 
 
 
  { 
 "text": "Post Request Value is nodejs" 
 }

您也可以尝试使用无效请求。 在邮递员中,选择GET并将URL键入为http://localhost:3000/test123

对此的响应将是无效文本

恭喜😄

您现在知道了如何在NodeJS中创建REST API,而无需使用任何框架或外部库😄

在Real Projects中,请始终尽可能使用框架或库,以使开发周期更加轻松快捷。

关于作者

我热爱技术,并关注该领域的进步。 我也喜欢用我的技术知识帮助他人。

我的网站: https : //adityasridhar.com/

我的其他帖子

Git简介

如何有效使用Git

这个奇怪的错误是如何出现在代码中的

最初发布在 adityasridhar.com 。

翻译自: https://hackernoon.com/how-to-use-nodejs-without-frameworks-and-external-libraries-97eb6acac9e3

nodejs数据库操作框架