当前位置: 首页> 房产> 建筑 > 第十一章:接口

第十一章:接口

时间:2025/7/15 6:30:07来源:https://blog.csdn.net/weixin_49794837/article/details/139784935 浏览次数:0次

接口

文章目录

  • 接口
    • 一、简介
      • 1.1 接口是什么
      • 1.2 接口的作用
      • 1.3 接口的开发与调用
      • 1.4 接口的组成
    • 二、RESTful API
    • 三、json-server
    • 四、接口测试工具
    • 五、接口的创建

一、简介

1.1 接口是什么

接口是前后端通信的桥梁

简单理解:一个接口就是 服务中的一个路由规则,根据请求响应结果

接口的英文单词是 API(Application Program Interface),所以有时也称之为 API 接口

这里的接口指的是『数据接口』,与编程语言(Java、Go等)中的接口语法不同

1.2 接口的作用

实现 前后端通信

接口的作用

1.3 接口的开发与调用

大多数接口都是由 后端工程师开发的,开发语音不限

一般情况下接口都是由**前端工程师调用的,但有时后端工程师也会调用接口**,比如短信接口、支付接口等

1.4 接口的组成

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

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

一个接口示例:身份证查询

接口示例

体验一下:https://api.asilu.com/idcard/?id=152502199405148245

二、RESTful API

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

  • URL 中的路径表示 资源,路径中不能有 动词,例如 create、delete、update 等这些都不能有
  • 操作资源要与 HTTP 请求方法 对应
  • 操作结果要与 HTTP 响应状态码 对应

规则示例:

操作请求类型URL返回
新增歌曲POST/song返回新生成的歌曲信息
删除歌曲DELETE/song/10返回一个空文档
修改歌曲PUT/song/10返回更新后的歌曲信息
修改歌曲PATCH/song/10返回更新后的歌曲信息
获取所有歌曲GET/song返回歌曲列表数组
获取单个歌曲GET/song/10返回单个歌曲信息

扩展阅读:RESTful API 设计指南

三、json-server

json-server 本身是一个 JS 编写的工具包,可以快速搭建 RESTful API 服务(json-server 官方地址)

操作步骤:

  1. 全局安装 json-server

    npm i -g json-server
    
  2. 创建 JSON 文件(db.json),编写基本结构

    {"song": [{"id": 1,"name": "干杯","singer": "五月天"},{"id": 2,"name": "当","singer": "动力火车"},{"id": 3,"name": "不能说的秘密","singer": "周杰伦"}]
    }
    
  3. 以 JSON 文件所在文件夹作为工作目录,执行如下命令

    json-server --watch db.json
    

默认监听端口为 3000

四、接口测试工具

介绍几个接口测试工具:

  • apipost (中文)
  • apifox (中文)
  • postman (英文)

五、接口的创建

以“记账本”为例,来创建账单接口:(以 RESTful API 规则来创建接口)

  • 获取账单列表接口
  • 创建账单接口
  • 删除账单接口
  • 获取单条账单接口
  • 更新单个账单接口
  1. 首先在 routes 文件夹下创建 web 文件夹,用来管理网页端的路由规则的文件;再创建 api 文件夹,用来管理接口的路由规则的文件:

    创建api和web

  2. 创建接口路由规则文件 account.js,与账单相关的接口会放到该文件下

  3. 将 account.js 导入到 app.js 中并使用它:

    // 导入 account 接口路由文件
    const accountRouter = require('./routes/api/account')// 使用 account 接口路由文件
    app.use('/api', accountRouter)
    
  4. 对 account.js 开始创建接口路由规则,其接口路由规则的格式如下:(按照 RESTful API 规则创建接口

    使用 res.json() 来直接返回一个 json 格式的数据:(补充:render 和 json 不能同时使用

    res.json({// 响应编号(一般用 20000 或 0000 来表示成功;用 1001~100n 来表示失败)code: 'xxxx',// 响应的信息(成功的信息|失败的信息)msg: 'xxxx',// 响应的数据(成功为获取到的 json 数据或空对象;失败为 null)data: xxxx
    })
    

    比如:设置获取所有账单的接口

    router.get('/account', function (req, res) {AccountModel.find().sort({ time: -1 }).then((data) => {// 成功的响应res.json({// 响应编号(一般用 20000 或 0000 来表示成功)code: '0000',// 响应的信息msg: '读取成功',// 响应的数据data: data})}).catch(() => {// 失败的响应res.json({code: '1001',msg: '读取失败',data: null})})
    })
    
  5. 进行接口测试:(注意:进行接口测试时,需要将数据库启动以及 http 服务也要启动

代码示例:

/*** 该文件是用来创建记账单接口:*      1.获取账单列表接口*      2.创建账单接口*      3.删除账单接口*      4.获取单条账单接口*      5.更新单个账单接口*/
var express = require('express');
var router = express.Router();// 导入 moment  --- 用来修改时间的格式
const moment = require('moment')
// 导入 AccountModel
const AccountModel = require('../../model/AccountModel')// 1.获取账单列表接口
router.get('/account', function (req, res) {AccountModel.find().sort({ time: -1 }).then((data) => {// 成功的响应res.json({// 响应编号(一般用 20000 或 0000 来表示成功)code: '0000',// 响应的信息msg: '读取成功',// 响应的数据data: data})}).catch(() => {// 失败的响应res.json({code: '1001',msg: '读取失败',data: null})})
});// 2.创建账单接口
router.post('/account', (req, res) => {AccountModel.create({...req.body,// 修改 time 的值time: moment(req.body.time).toDate()}).then((data) => {// 成功提醒res.json({code: '0000',msg: '创建成功',data: data})}).catch(() => {res.json({code: '1002',msg: '创建失败',data: null})})
})// 3.删除账单接口
router.delete('/account/:id', (req, res) => {// 获取要删除记录的idlet id = req.params.id// 删除数据库中的数据AccountModel.deleteOne({ _id: id }).then(() => {// 删除提醒res.json({code: '0000',msg: '删除成功',data: {}})}).catch(() => {res.json({code: '1003',msg: '删除失败',data: null})})
})// 4.获取单条账单接口
router.get('/account/:id', (req, res) => {// 获取单条账单的 idlet id = req.params.id// 根据 id 去查询对应的账单AccountModel.findById(id).then((data) => {// 成功响应res.json({code: '0000',msg: '查询成功',data: data})}).catch(() => {// 失败响应res.json({code: '1004',msg: '查询失败',data: null})})
})// 5.更新单个账单接口(patch:局部更新  put:整体替换掉)
router.patch('/account/:id', (req, res) => {// 获取单条账单的 idlet { id } = req.params// 根据 id 去更新账单信息AccountModel.updateOne({ _id: id }, req.body).then(() => {// 再次查询数据库,来获取更新后的账单信息AccountModel.findById(id).then((data) => {res.json({code: '0000',msg: '更新成功',data: data})}).catch(() => {res.json({code: '1004',msg: '查询失败',data: null})})}).catch(() => {res.json({code: '1005',msg: '更新失败',data: null})})
})module.exports = router;
关键字:第十一章:接口

版权声明:

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

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

责任编辑: