11.Node.js API接口

八、API接口

8.1 json-server工具

1)安装json-server

npm i -g json-server

2)示例

//students.json
{
    "student":[
        {"id":1,"name":"sally","age":18,"gender":"女"},
        {"id":2,"name":"ying","age":18,"gender":"女"},
        {"id":3,"name":"ejie","age":18,"gender":"女"},
        {"id":4,"name":"muyi","age":18,"gender":"男"}

    ],
    "class":[
        {"id":1,"class":"一(1)"},
        {"id":1,"class":"一(2)"},
        {"id":1,"class":"一(3)"},
        {"id":1,"class":"一(4)"}
    ]
}

启动json-server(默认监听端口为3000)

json-server --watch students.json

通过url访问

http://localhost:3000

//返回结果
/student - 4 items
/class - 4 items

http://localhost:3000/student

//返回结果:
[
{
id: "1",
name: "sally",
age: 18,
gender: "女"
},
{
id: "2",
name: "ying",
age: 18,
gender: "女"
},
{
id: "3",
name: "ejie",
age: 18,
gender: "女"
},
{
id: "4",
name: "muyi",
age: 18,
gender: "男"
}
]

http://localhost:3000/student/1

//返回结果
{
id: "1",
name: "sally",
age: 18,
gender: "女"
}

8.2使用postman对json-server进行数据操作

8.2.1新增数据

在这里插入图片描述

8.2.2删除数据

在这里插入图片描述

8.2.3更新数据

在这里插入图片描述

8.3增删改查API接口示例

//api.js
var express = require('express');
var router = express.Router();
const accountModel = require('../db/accountModel');
router.get('/account', function(req, res, next) {
  //获取所有数据api
  accountModel.find().sort({dateTime:-1}).exec().then((accounts)=>{     
    res.json({
      code:'0000',
      msg:'读取成功',
      data:accounts
    })
  }).catch((err)=>{
    res.json({
      code:'1001',
      msg:'读取失败',
      error:err,
      data:null
    })
 
})
})
router.get('/account/:id', function(req, res, next) {
  //获取单条数据api
  let id=req.params.id
  accountModel.find({_id:id}).then((data)=>{     
    res.json({
      code:'0000',
      msg:'读取成功',
      data:data
    })
  }).catch((err)=>{
    res.json({
      code:'1001',
      msg:'读取失败',
      error:err,
      data:null
    })
 
})
})

router.post('/account',function(req,res){
  //插入数据api
  req.body.time=moment(req.body.time).toDate()
  accountModel.create({
    ...req.body

  }).then((data)=>{
    res.json({
      code:'0000',
      msg:'插入数据成功',
      data:data
    })
  }).catch((err)=>{
    console.log(err)
    res.json({
      code:'1002',
      msg:'插入数据失败',
      error:err,
      data:null
    })
  })


})

router.delete('/account/:id',(req,res)=>{
  //删除数据api
  let id=req.params.id
  accountModel.findOneAndDelete({_id:id}).then((data)=>{
    if (!data){
      res.json({
        code:'1002',
        msg:'删除数据失败',
        error:'数据不存在',
        data:null

    })}else{
    res.json({
      code:'0000',
      msg:'删除数据成功',
      data:data
    })
  }


  }).catch((err)=>{
    console.log(err)
    res.json({
      code:'1002',
      msg:'删除数据失败',
      error:err,
      data:null
    })

  })

})

router.patch('/account/:id', function(req, res, next) {
  //更新单条数据api
  let id=req.params.id
  accountModel.updateOne({_id:id},req.body).then((data)=>{  
    //更新成功后重新到数据库读取被更新的数据,并返回给用户   
    accountModel.findOne({_id:id}).then((data)=>{
      res.json({
        code:'0000',
        msg:'更新成功',
        data:data
      })
    }).catch((err)=>{
      res.json({
        code:'1001',
        msg:'读取失败',
        error:err,
        data:null

    })
  })
    
  }).catch((err)=>{
    res.json({
      code:'1001',
      msg:'更新失败',
      error:err,
      data:null
    })
 
})
})
module.exports = router;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/907966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flink本地模式安装详解

1. 概述 Apache Flink 支持多种安装和运行模式,主要可以分为以下几种: Local(本地)模式: 这种模式主要用于学习和测试,所有的 Flink 组件都会在同一个 JVM 进程中运行。这种方式非常适合初学者了解 Flink…

LabVIEW配电产品精度测试系统

开发了一种基于LabVIEW平台的配电产品精度测试系统,通过自动化测试流程实现更高的测试准确性与效率。系统采用串口和TCP通信技术,与多功能交流采样变送器和配电设备无缝数据交互,提升了测试工作的可靠性和一致性。 一、项目背景 在配电产品…

0-ARM Linux驱动开发-字符设备

一、字符设备概述 Linux 系统中,设备被分为字符设备、块设备和网络设备等。字符设备以字节流的方式进行数据传输,数据的访问是按顺序的,一个字节一个字节地进行读取和写入操作,没有缓冲区。例如,终端(/dev…

flink 内存配置(一):设置Flink进程内存

Apache Flink通过严格控制各个组件的内存使用,在JVM之上提供了高效的工作负载。虽然Flink社区努力为所有配置提供合理的默认值,但由于用户部署在Flink上的应用范围很广,这并不总是可行的。为了给用户提供最大的生产价值,Flink支持…

Android启动流程_Zygote阶段

前言 上一篇文档中我们描述了 Android 启动中的 init 启动部分,本片文档将会继续 Android 启动流程的逻辑,继续梳理 Zygote 部分功能。 说明框架 对于 Zygote 进程,要从以下框架说明: 第一点,编译,zygo…

记本地第一次运行seatunnel示例项目

前置 静态源码编译通过:https://blog.csdn.net/u011924665/article/details/143372464 参考 seatunnel官方的开发环境搭建文档:https://seatunnel.incubator.apache.org/zh-CN/docs/2.3.5/contribution/setup 安装scala 下载scala 去官网下载&…

用流量策略做多出口实验

一、拓扑: 二、配置过程: 1、配置 IP 地址,配置动态路由协议 OSPF 2、AR2 上,配置高级 ACL,允许 ospf 流量、1 到 6、2 到 8、deny 所有 3、写流分类,抓取流量特征 4、写流行为,配置流量动作 5、…

ps技巧,来源于网络

魔棒工具 选个颜色之后 ctrlj复制图层 完成

【论文阅读】Associative Alignment for Few-shot Image Classification

用于小样本图像分类的关联对齐 引用:Afrasiyabi A, Lalonde J F, Gagn C. Associative alignment for few-shot image classification[C]//Computer Vision–ECCV 2020: 16th European Conference, Glasgow, UK, August 23–28, 2020, Proceedings, Part V 16. Spri…

《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列

《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列 《TCP/IP网络编程》学习笔记 | Chapter 3:地址族与数据序列分配给套接字的IP地址和端口号网络地址网络地址分类和主机地址边界用于区分套接字的端口号数据传输过程示例 地址信息的表示表示IPv4…

Android Studio 中的Gemini 推出更多人工智能开发功能

谷歌公司(Google LLC)今天发布了由其人工智能模型 “双子座”(Gemini)驱动的Android Studio的更多功能。 Android Studio中的 "双子座 "作为Android Studio(一种软件编辑器)的人工智能升级版于今…

基于物联网的户外环境检测装置教学文章

引言 随着物联网(IoT)技术的发展,越来越多的应用被广泛研究和应用于我们的日常生活中。户外环境检测装置是一种利用传感器、网络连接和数据分析技术,监测和分析环境数据(如温度、湿度、空气质量等)的设备。…

Javaweb梳理3——SQL概述+DDL语句1

Javaweb梳理3——SQL概述DDL语句1 Javaweb梳理3——SQL概述DDL语句13.1 SQL简介3.2 通用语法3.3 SQL分类3.4 DDL:操作数据库3.4.1 查询数据库3.4.2 创建数据库3.4.3 删除数据库3.4.4 使用数据库 Javaweb梳理3——SQL概述DDL语句1 3.1 SQL简介 英文:Structured Que…

【MWorks】Ubuntu 系统搭建

升级 Ubuntu系统 sudo apt-get update sudo apt-get upgrade安装流程 sudo chmod x 路径/文件.run安装 sudo 路径/文件.run安装过程中两个选项都填 y 打开安装对应的文件夹 运行 syslab.sh 文件,运行结束后,就可以在左上角开始搜索到syslab了。

Linux Qt 6安装Oracle QOCI SQL Driver插件(适用WSL)

本文参考 QOCI for the Oracle Call Interface (OCI)。 除一般的 Linux 系统外,本文也适用于 WSL 2。 在开始之前,如果没有安装 QOCI 插件,则试图链接 Oracle 数据库时会报错: Failed to create wl_display (No such file or dire…

电磁兼容(EMC):整改案例(六)Y电容过大导致雷击浪涌炸机

目录 1. 异常现象 2. 原因分析 3. 整改方案 4. 总结 1. 异常现象 某金属外壳带接地线的产品按GB/T 17626.5进行雷击浪涌测试,在L,N线对PE进行4kV浪涌电压测试时,出现炸机现象,AC-DC电源芯片损坏。而在L,N线间进行2…

WPF怎么通过RestSharp向后端发请求

1.下载RestSharpNuGet包 2.请求类和响应类 public class ApiRequest {/// <summary>/// 请求地址/// </summary>public string Route { get; set; }/// <summary>/// 请求方式/// </summary>public Method Method { get; set; }/// <summary>//…

C语言 | Leetcode C语言题解之第520题检测大写字母

题目&#xff1a; 题解&#xff1a; bool detectCapitalUse(char * word){int len strlen(word);int res 0;int index -1;if(len 1)return true;else{for(int i 0; i < len; i){if(isupper(word[i])){res;index i;}}}return res len || res 0 || (res 1 &&…

VidPanos:从随手拍摄的平移视频生成全景视频

在当今数字化时代,视频拍摄已经成为人们记录生活和分享经历的重要方式。然而,普通手机拍摄的视频往往受到视角的限制,无法完整地展现一个广阔的场景。今天,我们要介绍的 VidPanos 技术,为解决这个问题提供了一种创新的方法。 VidPanos 是由来自华盛顿大学、谷歌 DeepMind…

使用 LlamaIndex 实现的检索增强生成(RAG)

Retrieval Augmented Generation (RAG) using LlamaIndex — ROCm Blogs (amd.com) 2024 年 4 月 4 日 作者&#xff1a;Clint Greene. 先决条件 要运行本博客&#xff0c;您需要具备以下条件&#xff1a; Linux: 参见受支持的 Linux 发行版 ROCm: 参见安装说明 AMD GPU: 参…