NodeJS入门 0x5 NodeWeb程序(2)搭建一个 RESTful Web 服务

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/funkstill/article/details/85711454

目录

搭建一个 RESTful Web 服务

    新建项目 

     添加消息解析器


搭建一个 RESTful Web 服务

    设计 RESTful 服务时,要想好需要哪些操作,并将它们映射到 Express 里的路由上。就此例而言,需要实现保存文章、获取文章、获取包含所有文章的列表和删除不再需要的文章这几个功能。分别对应下面这些路由:

  • POST /articles——创建新文章;
  • GET /articles/:id——获取指定文章;
  • GET /articles——获取所有文章;
  • DELETE /articles/:id——删除指定文章。

    新建项目 

mkdir listing3_1
cd listing3_1
npm init -fy
npm install --save [email protected]
const express = require('express');
const app = express();
const articles = [{title:'Example'}];

app.set('port',process.env.PORT||3000);

app.get('/articles',(req,res,next)=>{//获取所有文章
    res.send(articles);
});

app.post('/articles',(req,res,next)=>{//创建一篇文章
    res.send('OK');
});

app.get('/articles/:id',(req,res,next)=>{//获取指定文章
    const id = req.params.id;
    console.log('Fetching:',id);
    res.send(articles[id]);
});

app.delete('/articles/:id',(req,res,next)=>{//删除指定文章
    const id = req.params.id;
    console.log('Deleting:',id);
    delete articles[id];
    res.send({message:'Deleted'});
});

app.listen(app.get('port'),()=>{
    console.log('App started on port',app.get('port'));
});

module.exports = app;

     添加消息解析器

    处理 POST 请求需要消息体解析。消息体解析器知道如何接收 MIME-encoded(多用途互联网邮件扩展) POST 请求消息的主体部分,并将其转换成代码可用的数据。一般来说,它给出的是易于处理的 JSON 数据。只要网站上有涉及提交表单的请求,服务器端就肯定会有一个消息体解析器来参与这个请求的处理。

//完成post部分
const express = require('express');
const app = express();
const articles = [{title:'Example'}];
const bodyParser = require('body-parser');

app.set('port',process.env.PORT||3000);

app.use(bodyParser.json());//支持编码为JSON的请求体
app.use(bodyParser.urlencoded({extended:true}));//支持编码为表的请求体

app.get('/articles',(req,res,next)=>{//获取所有文章
    res.send(articles);
});

app.post('/articles',(req,res,next)=>{//创建一篇文章
    const article = {title:req.body.title};
    articles.push(article);
    res.send(article);
});

app.get('/articles/:id',(req,res,next)=>{//获取指定文章
    const id = req.params.id;
    console.log('Fetching:',id);
    res.send(articles[id]);
});

app.delete('/articles/:id',(req,res,next)=>{//删除指定文章
    const id = req.params.id;
    console.log('Deleting:',id);
    delete articles[id];
    res.send({message:'Deleted'});
});

app.listen(app.get('port'),()=>{
    console.log('App started on port',app.get('port'));
});

module.exports = app;

猜你喜欢

转载自blog.csdn.net/funkstill/article/details/85711454