使用nodejs写接口

Posted 笑别弯腰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用nodejs写接口相关的知识,希望对你有一定的参考价值。

一、基本步骤

要使用Node.js编写接口,需要遵循以下步骤:

1、安装Node.js:如果尚未在计算机上安装Node.js,可以在Node.js的官方网站上下载安装程序,并按照说明进行安装。

2、初始化项目:在项目文件夹中打开终端窗口,并运行以下命令来初始化一个新的Node.js项目

npm init

这将会询问有关项目的详细信息,并生成一个package.json文件。

3、安装必要的依赖:接下来,需要安装一些必要的依赖,包括Express框架和其他用于开发API的库。可以使用以下命令来安装它们:

npm install express body-parser cors --save

这将会安装Express框架、body-parser库和cors库,并将它们添加到package.json文件中。

4、创建API路由:在项目文件夹中,创建一个新的javascript文件,并编写用于定义API路由的代码。例如,可以创建一个名为api.js的文件,并添加以下代码:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();

app.use(bodyParser.json());
app.use(cors());

// 定义GET请求的路由
app.get('/api', (req, res) => 
  res.send('Hello World!');
);

// 定义POST请求的路由
app.post('/api', (req, res) => 
  console.log(req.body);
  res.send('Received POST request');
);

// 启动服务器
app.listen(3000, () => 
  console.log('Server started on port 3000');
);

这个代码创建了一个Express应用程序,并定义了两个路由:一个用于处理GET请求,另一个用于处理POST请求。当GET请求到达时,服务器将返回"Hello World!“,当POST请求到达时,服务器将在控制台中记录请求体,并返回"Received POST request”。

5、启动服务器:在项目文件夹中,运行以下命令来启动服务器:

node api.js

这将会启动服务器,并将其运行在3000端口上。现在可以使用任何HTTP客户端向该端口发送请求,并测试API了。

这就是使用Node.js编写API的基本步骤。

二、结合mysql

1、安装MySQL:首先,需要在计算机上安装MySQL数据库。可以从MySQL的官方网站上下载安装程序,并按照说明进行安装。

2、安装MySQL Node.js驱动程序:接下来,需要安装Node.js的MySQL驱动程序。可以使用以下命令来安装它:

npm install mysql --save

3、连接到MySQL数据库:在api.js代码中,需要使用MySQL驱动程序创建一个连接到MySQL数据库的连接对象。可以使用以下代码来创建连接:

const mysql = require('mysql');

const connection = mysql.createConnection(
  host: 'localhost',
  user: 'root',
  password: 'your_password',
  database: 'your_database'
);

connection.connect((err) => 
  if (err) 
    console.error('Error connecting to MySQL database: ' + err.stack);
    return;
  
  console.log('Connected to MySQL database as id ' + connection.threadId);
);

在这个代码中,需要替换your_password和your_database为的MySQL数据库的密码和数据库名称。

4、执行SQL查询:一旦连接到MySQL数据库,可以使用MySQL驱动程序执行SQL查询并检索或修改数据。以下是一个例子,用于执行SELECT查询并返回结果:

connection.query('SELECT * FROM users', (err, results, fields) => 
  if (err) throw err;
  console.log('Retrieved ' + results.length + ' rows');
  console.log(results);
);

在这个例子中,我们执行一个SELECT查询来检索users表中的所有数据。当查询完成时,我们将结果输出到控制台。

5、关闭数据库连接:最后,在api.js代码中,当完成对MySQL数据库的操作时,需要关闭与数据库的连接。可以使用以下代码来关闭连接:

connection.end((err) => 
  if (err) 
    console.error('Error closing MySQL database connection: ' + err.stack);
    return;
  
  console.log('MySQL database connection closed');
);

完整api.js代码如下:

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const mysql = require('mysql');

const app = express();

app.use(bodyParser.json());
app.use(cors());


// 结合MySQL数据库
const connection = mysql.createConnection(
  host: '***',
  user: '***',
  password: '******',
  database: '****'
);

connection.connect((err) => 
  if (err) 
    console.error('Error connecting to MySQL database: ' + err.stack);
    return;
  
);
//course_prevent_always 表名
connection.query('SELECT * FROM course_prevent_always', (err, results, fields) => 
  if (err) throw err;
    // 定义POST请求的路由
  app.post('/api', (req, res) => 
    res.send(results);
  );

  // 启动服务器
  app.listen(3000, () => 
    console.log('Server started on port 3000');
  );
);

connection.end((err) => 
  if (err) 
    console.error('Error closing MySQL database connection: ' + err.stack);
    return;
  
  console.log('MySQL database connection closed');
);

这些是使用Node.js和MySQL数据库编写API的基本步骤。当然,这只是一个简单的例子,可以根据你的需求和API的规模来扩展它。

web前端效率提升-nginx+nodejs搭建本地生态

1.起因

  编写的项目是一个偏向于后台管理的web系统,使用了angular框架,在绑定数据的时候就依赖于后台的接口格式。

  以前是后台写好接口后,我在绑定,在这之前一些逻辑是没法做的,有时候后台接口给的慢,就要绑定假数据写死在js里面,

感觉非常被动,后台接口、服务器出个错什么的,我的进度就要被拖延,返回的格式不友好,或者返回的格式和传递的格式不一样的时候,我还要转格式。

人家拍拍屁股说接口写好了,回家休息,我就要加班来写代码。

2.解决思路

  返回格式和接受格式,已表单提交为例

  

  <input ng-model="data.type" type="text">
  <input ng-model="data.id" type="text">

  如果保存修改后的信息  后台的字段变为data_id  data_type,就系要做一下映射。我期望的自然是获取和提交的格式一样,这样就能最大程度发挥mvvc的特性

  第一步  由前端自己定义返回的格式和url,当然要找后端工程师确认

  第二步  用nodejs搭建本地服务器  

    将url转换为文件名,读取txt格式文件,没有则自动创建,用来存储要返回的数据。

  第三步  使用nginx做请求转发

    nginx用来做静态服务器,他可以通过配置拦截指定的url,并将请求l转发到指定地址,这样我们可以开两个端口,一个用来连接后台开发人员的服务器,一个用来

连接自己搭建的nodejs务器

3.具体步骤

  安装nginx、和使用nginx做请求转发请自行百度

  安装nodejs、ws模块(websocket请求,看官网的)、运行文件请自行百度

  nodejs执行脚本的代码

  

var http = require(‘http‘);

var url = require(‘url‘);

var readFile = require("fs");

http.createServer(function(request,response){

var params = url.parse(request.url,true).query;

var textName = request.url.slice(1,request.url.length).replace(/\//g,"_");//转换url为文件名

var path =  textName+".txt";

readFile.exists(path, function(exists){

        if(!exists){//不存在则创建

          readFile.writeFile(path,"{\r\n}",function(err) {

              if(err) {

                  return console.log(err);

              }

              responseJson(path,response);

          });

        }else{

        responseJson(path,response);

        }

    });

 

 

})

.listen(8888);

console.log("am-server is running");

function responseJson(path,response){

var data =JSON.parse(readFile.readFileSync(path,"utf-8"));//读取文件内容并转化为对象

response.writeHead(200,{

‘Content-Type‘:"application/json"

})

var responseData = {

data,

code:200

}

response.end(JSON.stringify(responseData));

}

* 上述方案得到我们项目组后端工程师、项目负责人的大力支持。换个端口就能得到数据,测试、开发不依赖后台。

 var http = require(‘http‘);
var url = require(‘url‘);
var readFile = require("fs");
http.createServer(function(request,response){
var params = url.parse(request.url,true).query;
var textName = request.url.slice(1,request.url.length).replace(/\//g,"_");
var path =  textName+".txt";
console.log(path)
readFile.exists(path, function(exists){
        if(!exists){
          readFile.writeFile(path,"{\r\n}",function(err) {
              if(err) {
                  return console.log(err);
              }
              responseJson(path,response);
          });
        }else{
         responseJson(path,response);
        }
    });


})
.listen(8888);
console.log("am-server is running");
function responseJson(path,response){
var data =JSON.parse(readFile.readFileSync(path,"utf-8"));
response.writeHead(200,{
‘Content-Type‘:"application/json"
})
var responseData = {
data,
code:200
}
response.end(JSON.stringify(responseData));




































以上是关于使用nodejs写接口的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你如何使用NodeJs和JavaScript开发微信公众号建议收藏

web前端效率提升-nginx+nodejs搭建本地生态

nodeJS爬虫前端爬虫系列

纯前端开发眼里nodejs到底是什么?

nodejs介绍

想用nodesjs做后台获取 java后台接口参数,这样可行吗