nodejs数据库操作框架
“粉红车辆的缩时摄影灯附近的建筑物”,由埃姆雷卡拉塔什上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然后点击“发送”
该请求的输出如下所示
{
"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 。
还要选择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数据库操作框架