欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > nodejs - 接口 学习笔记

nodejs - 接口 学习笔记

2024/10/23 17:42:09 来源:https://blog.csdn.net/qq_41604686/article/details/140660920  浏览:    关键词:nodejs - 接口 学习笔记

一、简介

1-1、是什么

接口是 前后端通信的桥梁
简单理解:一个接口就是 服务中的一个路由规则,根据请求响应结果
接口的英文单词是 API (Application Program Interface),所以有时也称之为 API 接口
这里的接口指的是『数据接口』, 与编程语言(Java,Go 等)中的接口语法不同

1-2、作用

实现前后端通信
在这里插入图片描述

1-3、接口的开发与调用

大多数接口都是由后端工程师开发的,开发语言不限。
一般情况下,接口都是由 前端工程师 调用的,但有时 后端工程师也会调用接口,比如 短信接口,支付接口等。

1-4、接口的组成

一个接口一般由以下几部分组成:

  • 请求方法
  • 接口地址(url)
  • 请求参数
  • 响应结果

一个接口示例 https://www.free-api.com/doc/325
在这里插入图片描述
体验一下:https://api.asilu.com/idcard/?id=371522199111299668

二、RESTful API

RESTful API 是一种特殊风格的接口,主要特点有如下几个:

  • URL 中的路径表示 资源,路径中不能带有动词,例如:create、delete、update 等都不能有
  • 操作资源要与 HTTP 请求方法对应(如新增要 POST、删除要 DELETE,更新要 PUT,获取要 GET)
  • 操作结果要与 HTTP 响应状态码对应(如没资源是 404,正常响应是 200,403 是没授权)
    在这里插入图片描述

扩展阅读:https://www.ruanyifeng.com/blog/2014/05/restful_api.html

三、json-server

json-server 是一个 js 编写的工具包,可以快速搭建 RESTful API 服务。
官方地址:https://github.com/typicode/json-server

操作:

  1. 全局安装 json-server
npm i -g json-server
  1. 创建 JSON 文件(db.json),编写基本结构
{ "song": [ { "id": 1, "name": "干杯", "singer": "五月天" }, { "id": 2, "name": "当", "singer": "动力火车" }, { "id": 3, "name": "不能说的秘密", "singer": "周杰伦" } ]
}
  1. 以 JSON 文件所在文件夹为工作目录,执行如下命令
json-server --watch db.json

四、接口测试工具

介绍几个接口测试工具

  • apipost: https://www.apipost.cn/ (中文)
  • apifox: https://www.apifox.cn/ (中文)
  • postman: https://www.postman.com/ (英文)
var express = require('express');
var router = express.Router();const AccountModel = require('../../models/AccountModel')
const dayjs = require('dayjs')router.get('/account', (req, res, next) => {// let list = db.get('accounts').value()// 从 mongodb 里面获取数据,将数据传给页面// AccountModel.find().sort({time: -1}).then((data) => {//   res.render('list', {list: data, dayjs: dayjs});// })AccountModel.find().sort({time:-1}).then((data) => {res.json({code: '0000',msg: '读取成功',data: data})}).catch((err) => {res.json({code: '1001',msg: '读取失败',data: null})})});router.post('/account',(req, res, next) => {AccountModel.create({...req.body,time: dayjs(req.body.time).format()}).then((data) => {console.log(data)// res.render('success', {msg:'添加成功了',url:'/account'})res.json({code: '0000',msg: '创建成功',data: data})}).catch(() => {// res.status(500).send('删除失败了')res.json({code: '1002',msg: '创建失败',data: null})})
});router.get('/account/remove/:id', (req, res) => {//获取 params 的 id 参数let id = req.params.idAccountModel.deleteOne({_id: id}).then((data) => {// console.log(data)// res.render('success', {msg:'删除成功了',url:'/account'})res.json({code: '0000',msg: '删除成功',data: {}})}).catch(() => {// res.status(500).send('删除失败了')res.json({code: '1003',msg: '删除失败',data: null})})
})router.get('/account/:id', (req, res) => {let { id } = req.paramsAccountModel.findById(id).then((data) => {res.json({code: '0000',msg: '读取成功',data: data})}).catch(() => {res.json({code: '1004',msg: '读取失败',data: null})})
})router.patch('/account/:id', (req, res) => {let  { id } = req.paramsconsole.log('====', id, '=====')console.log('====', req.body, '=====')AccountModel.updateOne({_id: id}, req.body).then((data) => {console.log('---',data,'---')res.json({code: '0000',msg: '更新成功',data: data})}).catch(() => {res.json({code: '1005',msg: '更新失败',data: null})})
})module.exports = router;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com