nodejs实现rest接口

川长思鸟来 2021-12-03 05:34 507阅读 0赞

nodejs可以用来实现简单的server及rest接口,可适用于某些简单的场景。当然nodejs也可以读取mongo、mysql等数据库。

本文简单介绍nodejs通过读写文件来实现rest接口。需要提前安装好nodejs环境,可参照本博客的其他文章。

一、get请求

准备文件 users.json,内容如下:

  1. {
  2. "user1" : {
  3. "id": 1,
  4. "name" : "tom",
  5. "password" : "hello123",
  6. "profession" : "teacher"
  7. },
  8. "user2" : {
  9. "id": 2,
  10. "name" : "jack",
  11. "password" : "123456",
  12. "profession" : "librarian"
  13. },
  14. "user3" : {
  15. "id": 3,
  16. "name" : "mike",
  17. "password" : "test",
  18. "profession" : "doctor"
  19. }
  20. }

写 nodejs文件 server.js,内容如下:

  1. var express = require('express');
  2. var app = express();
  3. var fs = require("fs");
  4. app.get('/api/view', function (req, res) {
  5. fs.readFile(__dirname + "/users.json", 'utf8', function (err, data) {
  6. console.log( data );
  7. res.end( data );
  8. });
  9. })
  10. var server = app.listen(8081, function () {
  11. var host = server.address().address
  12. var port = server.address().port
  13. console.log("访问地址为 http://%s:%s", host, port)
  14. })

上面的代码比较简单,通过fs.readFile读取了当前路径下的 users.json 文件,然后通过 res.end 方法返回请求响应。

然后在命令行环境下进入到 server.js所在的目录,运行 npm install express fs ,然后再运行 node server.js

D:\test>node server.js
访问地址为 http://:::8081

然后在浏览器中访问 http://localhost:8081/api/view ,可看到返回了 users.json 中的json内容

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jvd2VpMDI2_size_16_color_FFFFFF_t_70

二、post请求

下面实现post 的rest接口,传递 json 格式的参数。

修改前面的 server.js 文件,加入依赖库 body-parser 解析json,如下:

var bodyParser = require(‘body-parser’);
//创建application/json解析
var jsonParser = bodyParser.json();

下面加入 post rest api

app.post(‘/api/save’, jsonParser, function(req,res){
console.log(req.body)
fs.writeFile(__dirname + “/users.json”, JSON.stringify(req.body), { ‘flag’: ‘w’ }, function(err) {
console.log(err)
});
res.send({“status”: “ok”});
})

server.js 的完整内容如下:

  1. var express = require('express');
  2. var app = new express();
  3. var fs = require("fs");
  4. var bodyParser = require('body-parser');
  5. //创建application/json解析
  6. var jsonParser = bodyParser.json();
  7. app.get('/api/view', function (req, res) {
  8. fs.readFile(__dirname + "/users.json", 'utf8', function (err, data) {
  9. console.log( data );
  10. res.end( data );
  11. });
  12. })
  13. app.post('/api/save', jsonParser, function(req,res){
  14. console.log(req.body)
  15. fs.writeFile(__dirname + "/users.json", JSON.stringify(req.body), { 'flag': 'w' }, function(err) {
  16. console.log(err)
  17. });
  18. res.send({"status": "ok"});
  19. })
  20. var server = app.listen(8081, function () {
  21. var host = server.address().address
  22. var port = server.address().port
  23. console.log("访问地址为 http://%s:%s", host, port)
  24. })

上面的程序也很简单,利用body-parser库解析json,通过req.body获得请求的json内容,然后利用fs.writeFile 将接受到的json数据写入到当前目录的users.json 文件中。

运行 npm install body-parser

重新运行 node server.js 启动 nodejs 服务器

下面用 postman 对刚才的post 接口进行测试,如下

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2Jvd2VpMDI2_size_16_color_FFFFFF_t_70 1

上面没有像前面那样使用localhost 而是使用了真实的ip作为请求地址(其实完全一样),在Body下选择JSON格式,参数框中输入json,内容为:

{
“user1” : {
“id”: 1,
“name” : “rose”,
“password” : “abcd”,
“profession” : “teacher”
},
“user2” : {
“id”: 2,
“name” : “jack”,
“password” : “hi123”,
“profession” : “librarian”
}
}

点击 send 按钮,接口调用成功。打开服务器的users.json,可发现文件内容已经变成了刚才输入的json串。

再在浏览器中访问前面的get api接口 http://192.168.100.8:8081/api/view ,返回内容也发送了变化。

也可以通过js脚本实现post请求,如下:

  1. jsonData = {"user1":{"id":1,"name":"rose","password":"abcd","profession":"teacher"},"user2":{"id":2,"name":"jack","password":"hi123","profession":"librarian"}}
  2. $.ajax({
  3. contentType: 'application/json',
  4. type: 'POST',
  5. url: "/api/save",
  6. dataType: "json",
  7. data: JSON.stringify(jsonData),
  8. success: function (message) {
  9. console.log("ok");
  10. console.log(message);
  11. },error: function (message) {
  12. console.log("error");
  13. }
  14. });

本文内容到此结束,更多内容可关注公众号

20190823232633133.jpg

发表评论

表情:
评论列表 (有 0 条评论,507人围观)

还没有评论,来说两句吧...

相关阅读

    相关 nodejs接口

    在项目根目录下:“npm init” 初始化nodejs项目,生成package.json文件 npm install express -S (安装express框...

    相关 restful接口

    > restful是一种软件架构设计风格,主要体现于资源描述,统一接口,url定位,无状态等方面。在rest风格中每一个具体信息都可以看作是一种资源,对资源的操作通过统一的接口