NodeJS 后端开发 03 使用Restify开发API 一个完整的CRUD

简介: 这篇是继NodeJs Restful API开发 https://blog.csdn.net/geeklevin/article/details/109013368 的进一步补充。目录概述从简入手先看效果图再回来讲原理快速过一下,curl工具的介绍本篇重点

概述

CRUD 就是我们常说的创建Create,读取Read,更新Update,删除Delete。


这几个操作是后端开发中最常见的几个,举个例子,比如说一个商品销售的网站。它涉及的商品添加上架,提供商品给用户浏览,以及后续商品属性更新,下架到最终撤走,都是围绕一个商品进行CRUD的操作。当然实际操作会更加复杂。



从简入手

前篇写了一个更加参数name打印到响应返回用户端,在浏览器展示。


这篇我们将创建一个商品product,然后我们围绕商品做下面4个接口:


添加商品信息

读取商品信息

更新商品信息

删除商品


先看效果图

读取所有商品,打开浏览器访问:http://localhost:8080/products

(下图为FireFox 右键->查看元素,这里选择火狐因为结果自动格式化了。 如果是Chromeimage.png

在上面网络这一栏,我们可以进去看到,浏览器访问这个接口链接本质上,是进行了一个GET 请求。

这里有必要引入一个常用的命令行工具“curl”, 先记住简单使用命令:

curl -X GET 目标链接

#上面的命令是使用curl工具对 目标链接  发起 GET 请求。

image.png

上图左边为接口测试窗口,右边为接口服务的web进程。



由于浏览器默认没有安装测试web api的工具,下面其他增加,删除,更新操作都使用curl工具进行


添加商品信息

curl -X POST -H "Content-type: application/json" -d '{"id":5,"name":"Cannon","type":"Camera"}' http://localhost:8080/produc

image.png

  • 删除商品信息,效果如下

执行删除前,我们先查询一下id为4的产品信息,再执行删除,效果如下

image.png

右边web进程输出了最新产品信息没有id=4的记录了,删除成功。



查询商品信息,效果如下

#查询id=4的产品,没有返回,已删除


curl -X GET http://localhost:8080/product/4


#查询id=5的产品,返回id为5的产品信息。


curl -X GET http://localhost:8080/product/5  image.png

修改商品信息

#我们打算把id=5的产品名改为CannonX2


curl -X PUT -H "Content-type: application/json" -d '{"id":5,"name":"CannonX2","type":"Camera"}' http://localhost:8080/product  


image.png

再回来讲原理


快速过一下,curl工具的介绍

curl 是Linux类操作系统常见的Http请求客户端,linux可以通过终端输入:yum install -y curl 进行快速安装。


简单重复一下curl 的使用:curl -X 动作(http 方法) 链接(目标接口网址)


更多信息看:https://curl.se/download.html



本篇重点

下面代码重点解析,上图多个接口的代码实现。


关于server(http 服务创建) 没有再次注释,可以回顾前篇: https://blog.csdn.net/geeklevin/article/details/109013368

const restify = require('restify');
//加载了产品信息的js模块赋值给pm常量
const pm = require('./product.js');
//这里回顾上面演示第一个图,访问链接前打印所有产品信息
pm.show();
console.log(pm.query(1));
function read(req, res, next) {
   ....//省略获取请求中id的代码段
   // 调用pm对象的查询产品方法
   res.send(pm.query(id))
}
function dele(req, res, next) {
   ....//省略获取请求中id的代码段
   //调用pm对象的删除产品方法
  res.send({status:'deleted',msg: pm.delete(id)})
}
function readAll(req, res, next){
   //调用pm对象的读取所有产品方法
   res.send(pm.getData())
}
function create(req, res, next){
   ....//省略获取请求中product的代码段
   //调用pm对象的增加产品方法
   pm.add(product);
}
function update(req, res, next){
   ....//省略获取请求中product的代码段
   //调用pm对象的修改产品方法
   pm.update(product) 
}
//这里是前篇讲过
var server = restify.createServer();
server.use(restify.plugins.bodyParser({ mapParams: true }));
//这里重点,把readAll方法绑定到接口/products的GET动作
server.get('/products',readAll);
//这里依次把 查/增/改/删 分别绑定到/product的GET / POST / PUT / DELETE 动作。
server.get('/product/:id', read);
server.post('/product', create);
server.put('/product', update);
server.del('/product/:id', dele);
//服务器监听8080端口
server.listen(8080, function() {
  console.log('%s listening at %s', server.name, server.url);
});

上面通过restify 对应的server对象绑定了4个常用的HTTP请求方法,实现了对同个链接不同请求方法的不同响应。


在此,我们再拿一个更新产品操作解析:


curl -X PUT -H "Content-type: application/json" -d '{"id":5,"name":"CannonX2","type":"Camera"}' http://localhost:8080/product


用户端:使用curl 针对/product接口,发起PUT请求


服务端:发现/product接口有效,并且绑定了更新产品方法到PUT方法,执行更新产品方法。


(最近想到了一个RESTFly工具在弄,拖了很久写的这篇文章。欢迎读者评论解析其他增加,删除,查询的原理)



PS:上图为重点代码解析,省略了很多代码(不作为可执行最终版)


项目完整代码:


https://codechina.csdn.net/geeklevin/nodejs-api-002-crud


目录
相关文章
|
5月前
|
缓存 监控 前端开发
顺企网 API 开发实战:搜索 / 详情接口从 0 到 1 落地(附 Elasticsearch 优化 + 错误速查)
企业API开发常陷参数、缓存、错误处理三大坑?本指南拆解顺企网双接口全流程,涵盖搜索优化、签名验证、限流应对,附可复用代码与错误速查表,助你2小时高效搞定开发,提升响应速度与稳定性。
|
5月前
|
API 开发者 数据采集
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
2025反向海淘新机遇:依托代购系统,聚焦小众垂直品类,结合Pandabay数据选品,降本增效。系统实现智能翻译、支付风控、物流优化,助力中式养生茶等品类利润翻倍,新手也能快速入局全球市场。
高效获取淘宝商品详情:API 开发实现链接解析的完整技术方案
|
6月前
|
数据采集 缓存 API
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
本文详解小红书笔记详情API的开发对接、实战场景与收益模式,涵盖注册避坑、签名生成、数据解析全流程,并分享品牌营销、内容创作、SAAS工具等落地应用,助力开发者高效掘金“种草经济”。
小红书笔记详情 API 实战指南:从开发对接、场景落地到收益挖掘(附避坑技巧)
|
5月前
|
存储 缓存 算法
淘宝买家秀 API 深度开发:多模态内容解析与合规推荐技术拆解
本文详解淘宝买家秀接口(taobao.reviews.get)的合规调用、数据标准化与智能推荐全链路方案。涵盖权限申请、多模态数据清洗、情感分析、混合推荐模型及缓存优化,助力开发者提升审核效率60%、商品转化率增长28%,实现UGC数据高效变现。
|
5月前
|
存储 缓存 算法
亚马逊 SP-API 深度开发:关键字搜索接口的购物意图挖掘与合规竞品分析
本文深度解析亚马逊SP-API关键字搜索接口的合规调用与商业应用,涵盖意图识别、竞品分析、性能优化全链路。通过COSMO算法解析用户购物意图,结合合规技术方案提升关键词转化率,助力卖家实现数据驱动决策,安全高效优化运营。
|
8月前
|
人工智能 Java API
后端开发必看:零代码实现存量服务改造成MCP服务
本文介绍如何通过 **Nacos** 和 **Higress** 实现存量 Spring Boot 服务的零代码改造,使其支持 MCP 协议,供 AI Agent 调用。全程无需修改业务代码,仅通过配置完成服务注册、协议转换与工具映射,显著降低改造成本,提升服务的可集成性与智能化能力。
2254 1
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
639 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
存储 缓存 负载均衡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
512 6
|
8月前
|
前端开发 Java 数据库连接
后端开发中的错误处理实践:原则与实战
在后端开发中,错误处理是保障系统稳定性的关键。本文介绍了错误分类、响应设计、统一处理机制及日志追踪等实践方法,帮助开发者提升系统的可维护性与排障效率,做到防患于未然。
|
10月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
550 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践