首页 > 其他分享 >第十一章:接口

第十一章:接口

时间:2024-06-18 22:30:04浏览次数:18  
标签:账单 第十一章 接口 json res data id

接口

文章目录

一、简介

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

四、接口测试工具

介绍几个接口测试工具:

五、接口的创建

以“记账本”为例,来创建账单接口:(以 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) => {
  // 获取要删除记录的id
  let 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) => {
  // 获取单条账单的 id
  let 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) => {
  // 获取单条账单的 id
  let { 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;

标签:账单,第十一章,接口,json,res,data,id
From: https://blog.csdn.net/weixin_49794837/article/details/139784935

相关文章

  • Postman接口测试工具详解
    在现代软件开发过程中,接口测试是确保API安全、可靠和高效运作的关键环节。Postman作为一款流行的API开发工具,提供了一套全面的接口测试解决方案。本文将对Postman进行详细解读,帮助开发者更好地利用这一工具提高接口测试的效率和质量。一、Postman简介Postman是一个强大的AP......
  • 【接口自动化测试】第一节.接口自动化测试基础和框架介绍
    文章目录前言一、接口自动化基础   1.1接口自动化基础介绍   1.2接口自动化测试流程   1.3选取自动化测试用例   1.4搭建自动化测试环境二、接口自动化测试框架   2.1接口自动化框架设计思路   2.2定义项目目录结构总结前......
  • python 注册nacos 进行接口规范定义
    背景:一般场景python服务经常作为java下游的算法服务或者数据处理服务但是使用http去调用比较不灵活,通过注册到nacos上进行微服务调用才是比较爽的1.定义feginapi的接口定义java端定义接口请求和响应主要关注CommonResult结构和python要一直,不然序列号是有问题的Co......
  • spring boot jpa 进行通用多条件动态查询和更新 接口
    原因:jpa没有类似于mybatis的那种拼接sql的方式想动态更新需要使用CriteriaUpdate的方式去一直拼接,其实大多数场景只要传入一个非空实体类,去动态拼接sql1.定义实体类继承一个统一的类型@Data@ToString@Entity@Table(name="sys_user")@DynamicInsert@JsonIgno......
  • sonarqube的API接口(持续补充)
    1.查看sonarqube的违规问题API{sonar_url}/api/issues/search?componentKeys={project_key}1-1如果要限制违规级别如下:{sonar_url}/api/issues/search?componentKeys={project_key}&severities=BLOCKER,CRITICAL1-2如果设置每页展示的数量和页码(只支持每页500条,20页的数据展示......
  • 【闲鱼API】深入解析与应用指南——闲鱼商品详情API接口♠
    在二手交易市场中,阿里巴巴集团旗下的闲鱼平台以其社区氛围和交易模式,吸引了大量用户。为了进一步丰富用户体验和提升交易透明度,开放了一系列API接口,其中包括商品详情API闲鱼商品详情API接口概述闲鱼商品详情API接口允许用户和开发者获取商品的详细信息,包括商品描述、图片、价格......
  • 港股OMD-C原始数据接口知识拓展
    OMD-C包括SS、SP、SF三个级别。简单来说,就是通过三种级别推送不同的数据,具体使用哪一档由企业自行选择。OMD-C数据服务分为实时服务、刷新服务、重传服务三部分来完成所有数据的处理。OMD-C包括约20个消息类型的数据,每天约产生3亿条数据。港交所数据持有HKEx(香港交易所)数据......
  • Xilinxddr3 mig ip核:基于native接口的ddr3读写控制
    一、MIGIP核读写时序如下图是7系列的MIGIP核结构框图。左侧是用户接口,即用户(FPGA)同MIG交互的接口,用户就必须掌握这些接口才可以使用该IP核。将用户侧的信号分类如下图。其中的输入输出是相对于MIGIP核的,即对用户侧来说是相反的。写命令操作时序如下,其中,......
  • Postman 接口测试工具使用方法
            Postman是一个强大的API测试工具,广泛用于开发和测试API。以下是对Postman的详细介绍,包括其主要功能、使用方法和一些高级功能。一、Postman简介        Postman是一个用于API开发的协作平台,提供了丰富的功能来进行API请求、测试和文档编......
  • 银行卡三要素核验-银行卡三要素核验接口-银行卡三要素核验API
    接口地址:https://www.wapi.cn/api_detail/102/235.html在线查询:https://www.wapi.cn/bank_name_verfiy.html网站地址:https://www.wapi.cn返回格式:json,xml请求方式:POST,GETPOST请求需要设置Header头:Content-Type:application/x-www-form-urlencoded;charset=utf-8请......