nodejs - 接口 学习笔记

news/2024/9/22 14:54:46/

一、简介

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;

http://www.ppmy.cn/news/1501214.html

相关文章

LINUX操作系统安全

一、概述内容 操作系统负责计算机系统的资产管理,支撑和控制各种应用程序运行,为用户提供管理计算机系统管理接口。操作系统也是构成网络信息系统的核心关键组件,其安全可靠性决定了计算机系统的安全性和可靠性。 操作系统安全是指满足安全…

树与二叉树【数据结构】

前言 之前我们已经学习过了各种线性的数据结构,顺序表、链表、栈、队列,现在我们一起来了解一下一种非线性的结构----树 1.树的结构和概念 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一…

免费【2024】springboot 畅游游戏销售平台

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

什么材质的挖耳勺好用?硬核上佳产品分享!

耳道健康随着生活品质的提高,逐渐被大家重视。因为它会直接影响我们的听力和卫生健康,如果长时间不清理,很容易堵塞在耳膜里导致耳鸣头晕等状况。挖耳勺的材质非常多,有铁质、不锈钢、软硅胶等等,那么什么材质的挖耳勺…

【Android】广播机制

前言 广播机制是Android中一种非常重要的通信机制,用于在应用程序之间或应用程序的不同组件之间传递信息。广播可以是系统广播,也可以是自定义广播。广播机制主要包括标准广播和有序广播两种类型。 简介 在Android中,广播(Broa…

Scikit-learn简介

Scikit-learn 是一个广泛使用的开源机器学习库,它建立在 NumPy、SciPy 和 matplotlib 这些科学计算库之上,提供了简单高效的数据挖掘和数据分析工具。以下是 Scikit-learn 在机器学习项目中的一些典型应用: 1. **数据预处理**: …

Nvidia GPU驱动安装报错显卡与驱动不兼容(本身兼容)

最近在公司服务器上遇到了一个特别离谱的问题,就是在本身在nividia官网上面下载的匹配的显卡驱动,安装之后采用下面命令查看驱动显示: $ nvidia-smiNVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make su…

java实现迭代(在大数据量时要比递归效率更高)

在项目中有个需求:查找指定机构下所有的子机构,之前使用的递归方式,效率相差很多 比如之前写的一个递归的方法:https://blog.csdn.net/qq_33651286/article/details/140539728 在Java中,递归和迭代是两种常用的算法实…