moon-easy-api:自动化生成基于MongoDB的接口

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: moon-easy-api:自动化生成基于MongoDB的接口

目录


前言

效果

试试

测试

缺陷

补充

前言


我是一个比较喜欢前端的爱好者,我其实很多时候都有做一些个人小项目demo的计划。


但是总是遇到一个问题。


我不想写接口!!


虽然也许只是很简单的一些增删改查也让我觉得很麻烦。


我学过java,但是让我为了做一个小demo用java整一套ssm的后端服务想想就麻烦。


我又想到我还用过MongoDB,我的本地机和租借的云服务器都部署好了MongoDB,结合nodejs,不考虑企业级的规范,用express只要写app.js一个文件直接执行起来,就能有可以用的接口了。


只是写起来还是很麻烦,我也不需要特别复杂的调用,只要能支持我的小项目使用的增删改查就够,都是一些重复的东西,于是我萌生一个想法,重复的内容封装起来,用文件配置的形式,只要添加一个文件,运行起来接口就给我部署好了,于是我开始尝试…


效果


express的基础服务器框架,你只需要创建一个app的实例,连接自己的mongodb数据库,然后导入我上传的npm包,将app实例和数据库mongoose传入方法即可。

image.png

在你的服务端根目录创建一个apiModel文件夹(必须是该名称),然后可以添加你要的数据对象,就是用于生成数据库表信息的一个对象,按类似形式导出。

image.png

运行app.js。

image.png

试试


新建一个项目,test

生成package.json

npm init -y

运行结果

C:\Users\chenshaojun\Desktop\test>npm init -y
Wrote to C:\Users\chenshaojun\Desktop\test\package.json:
{
  "name": "test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

我们可能需要添加对es6模块的支持。

image.png

然后在根目录npm下载我的npm包,名字叫做moon-easy-api

npm i moon-easy-api -S

运行结果

C:\Users\chenshaojun\Desktop\test>npm i moon-easy-api -S
npm WARN deprecated urix@0.1.0: Please see https://github.com/lydell/urix#deprecated
npm WARN deprecated resolve-url@0.2.1: https://github.com/lydell/resolve-url#deprecated
npm WARN deprecated querystring@0.2.1: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
added 403 packages, and audited 404 packages in 33s
16 packages are looking for funding
  run `npm fund` for details
found 0 vulnerabilities

完成后编写我们的app.js。

image.png

import express from "express";
import mongoose from "mongoose";
import bodyParser from "body-parser";
import easyApi from 'moon-easy-api';
const app = express();
app.use(bodyParser.json());
//连接你的mongodb数据库注意数据库名我的是mydata
//你的自己创建好
mongoose.connect("mongodb://81.68.155.48:27017/mydata");
easyApi(app, mongoose);
app.listen(3000, function () {
  console.log("服务器开启中....端口号是:" + 3000);
});

再编写自己想要的model。

image.png

const model = {
  id: String,
  name: String,
  old: Number,
  sex: String,
};
export { model };

然后就可以运行app.js。

image.png

显示数据库连接成功就是完成对接口的创建了。


测试



成功后会再对应的端口生成可以增删改查的接口,根据我这里的model名字是other,other便会生成addother、deleteother、updateother、getother四个接口。


image.png

代码,注意args[0]是你要执行的接口名,在执行命令时传递

import fetch from "node-fetch";
const args = process.argv.slice(2)
const test = async () => {
  const response = await fetch("http://localhost:3000/" + args[0], {
    method: "POST",
    headers: {
      Accept: "application/json",
      "Content-Type": "application/json;charset=UTF-8",
    },
    body: JSON.stringify({
      id: "1",
      name: "月",
      old: 18,
      sex: "男",
    }),
  });
  const res = await response.json();
  console.log(res);
};
test();

需要的fetch包下载一下

npm i node-fetch -D

添加test命令

image.png

试试增查删

npm run test addother
npm run test getother
npm run test deleteother
C:\Users\chenshaojun\Desktop\test>npm run test addother
> test@1.0.0 test
> node test.js "addother"
(node:11188) ExperimentalWarning: stream/web is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
{
  data: {
    _id: '61371d7081c5ef1c1aa87c1a',
    id: '1',
    name: '月',
    old: 18,
    sex: '男',
    __v: 0
  },
  msg: '添加成功'
}
C:\Users\chenshaojun\Desktop\test>npm run test getother
> test@1.0.0 test
> node test.js "getother"
(node:1320) ExperimentalWarning: stream/web is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
{
  data: {
    _id: '61371d7081c5ef1c1aa87c1a',
    id: '1',
    name: '月',
    old: 18,
    sex: '男',
    __v: 0
  },
  code: 1,
  msg: '查询成功'
}
C:\Users\chenshaojun\Desktop\test>npm run test deleteother
> test@1.0.0 test
> node test.js "deleteother"
(node:8788) ExperimentalWarning: stream/web is an experimental feature. This feature could change at any time
(Use `node --trace-warnings ...` to show where the warning was created)
{ code: 2, msg: '删除成功' }

缺陷



1.目前所有对象必须传递id,因为内容是根据id进行查询的

2.目前没有考虑复杂的情况,关联表之类的都没有,只用于不同对象的增删改查。


补充



我感觉自己这个想法非常有用啊。


不只是用来生成简易接口做demo,工作的时候等不到后台数据我也可以自己创建简易接口自测。


不过目前还只是做了个开头,我想对自己这个想法进行更新迭代,比如可拓展的自定义接口,还是解决一下我这个必须传id的问题。


有没有有同样想法的前端开发者,可以私聊我交流交流,或者有没有厉害的前辈们想要指点一下。


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
12天前
|
人工智能 自然语言处理 API
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
谷歌推出的Multimodal Live API是一个支持多模态交互、低延迟实时互动的AI接口,能够处理文本、音频和视频输入,提供自然流畅的对话体验,适用于多种应用场景。
60 3
Multimodal Live API:谷歌推出新的 AI 接口,支持多模态交互和低延迟实时互动
|
7天前
|
前端开发 API 数据库
Next 编写接口api
Next 编写接口api
|
14天前
|
XML JSON 缓存
阿里巴巴商品详情数据接口(alibaba.item_get) 丨阿里巴巴 API 实时接口指南
阿里巴巴商品详情数据接口(alibaba.item_get)允许商家通过API获取商品的详细信息,包括标题、描述、价格、销量、评价等。主要参数为商品ID(num_iid),支持多种返回数据格式,如json、xml等,便于开发者根据需求选择。使用前需注册并获得App Key与App Secret,注意遵守使用规范。
|
12天前
|
JSON API 开发者
淘宝买家秀数据接口(taobao.item_review_show)丨淘宝 API 实时接口指南
淘宝买家秀数据接口(taobao.item_review_show)可获取买家上传的图片、视频、评论等“买家秀”内容,为潜在买家提供真实参考,帮助商家优化产品和营销策略。使用前需注册开发者账号,构建请求URL并发送GET请求,解析响应数据。调用时需遵守平台规定,保护用户隐私,确保内容真实性。
|
13天前
|
搜索推荐 数据挖掘 API
淘宝天猫商品评论数据接口丨淘宝 API 实时接口指南
淘宝天猫商品评论数据接口(Taobao.item_review)提供全面的评论信息,包括文字、图片、视频评论、评分、追评等,支持实时更新和高效筛选。用户可基于此接口进行数据分析,支持情感分析、用户画像构建等,同时确保数据使用的合规性和安全性。使用步骤包括注册开发者账号、创建应用获取 API 密钥、发送 API 请求并解析返回数据。适用于电商商家、市场分析人员和消费者。
|
23天前
|
JSON API 开发工具
淘宝实时 API 接口丨淘宝商品详情接口(Taobao.item_get)
淘宝商品详情接口(Taobao.item_get)允许开发者获取商品的详细信息,包括基本信息、描述、卖家资料、图片、属性及销售情况等。开发者需注册账号、创建应用并获取API密钥,通过构建请求获取JSON格式数据,注意遵守平台规则,合理使用接口,确保数据准确性和时效性。
|
22天前
|
监控 数据管理 测试技术
API接口自动化测试深度解析与最佳实践指南
本文详细介绍了API接口自动化测试的重要性、核心概念及实施步骤,强调了从明确测试目标、选择合适工具、编写高质量测试用例到构建稳定测试环境、执行自动化测试、分析测试结果、回归测试及集成CI/CD流程的全过程,旨在为开发者提供一套全面的技术指南,确保API的高质量与稳定性。
|
24天前
|
JSON 安全 API
Python调用API接口的方法
Python调用API接口的方法
107 5
|
24天前
|
JSON 缓存 监控
淘宝商品详情接口(Taobao.item_get)丨淘宝API接口指南
淘宝商品详情接口(Taobao.item_get)允许开发者通过HTTP GET方法获取淘宝商品的详细信息,包括商品ID、价格、库存等。请求需包含key、secret、num_iid等必选参数,支持缓存及多种返回格式。此接口广泛应用于电商数据分析、商品选品、价格监控等领域,提升商家运营效率。
|
1月前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。