使用Node.js编写接口

760 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情

前言

之前写过一篇文章《Node.js实现简单爬虫小案例》 ,爬取了豆瓣读书的一些图书数据,现在根据这些数据做一个接口,实现可以在网页上请求该接口,返回这些图书数据。

实现步骤

因为之前做爬虫案例,已经创建了项目,并安装了一些依赖(ps: 具体的内容可以点击上面前言中的文章查看)。写接口就直接在这个项目中实现,只需要新建一个js文件serve.js,在这个js文件中写实现接口相关代码。

1.首先需要引入express框架,搭建基本的node服务,在终端运行node server.js命令,测试get请求
const express = require('express')
const app = express()
const port = 8080

app.listen(port, ()=> {
  console.log('server start listening on: http://localhost:%s', port)
})

app.get('/', (req, res) => {
    res.send('<h1>hello world</h1>')
})

image.png

res.json 以json对象的形式返回
res.send 以页面(html)的形式返回
res.download 以文件的方式返回,前端请求会下载此文件

为了每次改动代码,不需要在终端重新输入命令运行程序,可以在package.json文件中定义热更新启动命令

  • 首先需要全局安装插件hotnode(实现node程序热更新) npm i hotnode -g

  • package.json文件定义脚本命令(项目启动命令)"start": "hotnode serve.js",

image.png

  • 运行程序npm start

会出现报错:TypeError: util.print is not a function

原因:unit 文档的util.print函数已经弃用

image.png

修改:找到报错的路径并点击进入该文件,修改util.print方法

this.process.stdout.on("data", function(data) {
  // return util.print(data.toString());
  return console.log(data.toString)
});

成功运行,每次修改文件后保存,就能自动发布

image.png

2. 编写GET接口
const express = require('express')
const app = express()
const port = 8080
//引入图书数据
const books = require('./books.json')

app.get('/api/books',(req, res) => {
  res.json({
    status: 200,
    messsage: 'success',
    data: books
  })
})

app.listen(port, ()=> {
  console.log('服务启动')
})

运行成功后,打开浏览器输入链接查看是否返回数据

image.png

这样就简单实现了一个get请求来获取到数据。但是数据是假的,还没有连接数据库,也没有处理接口跨域问题,总之这篇文章就是编写接口的一个简单初体验的学习记录,后面还有许多需要学习的。