位置: 编程技术 - 正文

NodeJS基础API搭建服务器详细过程记录(基于nodejs的api框架)

编辑:rootadmin

推荐整理分享NodeJS基础API搭建服务器详细过程记录(基于nodejs的api框架),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node-api,node.js搭建http服务器,基于nodejs的api框架,node的api,node js api,基于nodejs的api框架,nodejs apm,nodejs做api接口,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在习惯了使用express框架,jade模板引擎等现成工具来写代码之后,很多人对于基本的NodeJS API会慢慢生疏。本文将以一个超小型web项目,来详细介绍如何使用NodeJS基础的http, fs, path, url等模块提供的API来搭建一个简单的web服务器。当做对NodeJS的一次复习,也为初学NodeJS的开发者提供一个参考。本文所搭建的项目将不会使用express等后端框架,仅使用最基础的NodeJS API,按照MVC设计模式的思路进行编码和讲解,交流意见。源代码地址如下,建议下载源码边看博客边对照源码才能比较快理解整个过程。 type,这样文件发过去之后客户端才能识别出文件类型从而正确使用。最后,像图片、音频等多媒体文件需要用二进制的读写方式,所以在响应图片的时候记得加上“binary”。

static写完了,下面来继续写api。api需要根据请求的URL来响应对应的内容。例如客户端请求“/”,就响应它网站的主页,请求“/detail&#;id=0”就响应它id为0的食品的详情页面。如果客户端请求了不存在的URL,则给回一个响应,表示没有找到。代码如下所示。这里我分了两个handler,本项目没有post操作,所以只有getHandler会使用到。给出postHanlder的目的是为了简单说明如何写处理客户端post请求的路由。

以getHanlder[‘/']为例,当客户端请求“/”的时候,不是简单地把index.html响应给服务器这么简单,想象一下,一家食品店,每天提供的菜式可能会有所不同,或者因为季节问题而导致每个季节的特色菜都有所不同,所以我们网站主页展示的菜式也可能随之而变化。因此,我们需要根据数据库中存储的主页数据来动态渲染主页的内容。我把idnex.html写成模板,为了不适用jade等模板引擎,我在html里面使用如同“{{foodMenu}}”这种形式的标记,当读取完模板之后,利用简单的字符串操作将标记替换成我们需要动态渲染的内容,即可实现动态渲染HTML的目的。

静态文件之外的其他路由,或者叫控制器(controller),一般都会包含业务逻辑,即业务逻辑一般是在这一层完成的。像上面的根据数据库内容动态渲染出首页,或者你在其他场景下面会见到的如登录注册的数据检验,成功登录之后将客户端重定向到对应的用户界面等等业务逻辑都是在这一层实现。

NodeJS基础API搭建服务器详细过程记录(基于nodejs的api框架)

最后,讲一下post方法的处理过程,虽然本项目中没有使用到post。post方法跟get方法最主要的不同之处在于post方法除了发送http头部信息之外还带有客户端提交的数据。在接收到post请求的时候,需要将数据读取出来,读取数据的方式也挺简单,只要给request设置监听器就行了。当request对象收到数据的时候会触发“data”事件,因此,给这个事件设置监听器,让它收到数据的时候就把数据保存起来。在接收完一个请求全部的post数据之后会触发“end”事件,因此,给这个事件设置监听器,使得在接收完全部数据之后才开始对提交的数据进行相关的操作。

编写数据模型

先拿主页来讲吧。通过前面的截图,我们可以知道,主页上的数据包括展示菜品的图片、名称、价格,另外需要根据不同的菜品跳转到对应的详情页,因此还需要一个id来用作标识符。最后,可以得到如下的数据模型(下面的模型我使用json描述,你也可以采取其他办法)。这个数据模型描述了主页的数据模型,即首页有很多个食品foods,用数组表示,每个数据元素代表一个食品。每个食品包括四项信息,id,image,name,price。id的值是一个数字,作为唯一标识符。image是一个字符串,用来指明图片地址。name的值是字符串,表示食品的名字,price的值是一个字符串,表示食品的价格。

设计好数据模型的目的是方便我们设计伪数据,也方便我们对数据进行操作,一般在开始编程之前要做的事情就是设计好数据模型(数据结构),这样写程序时候才会更加顺利,很多接口才能规范下来。虽然我这里把model这一步放在了最后,但我这里model里面只是写了数据访问模块,不代表数据模型是最后才设计的,只是因为我这里讲解的思路是自定向下,刚好讲到model就顺带提一提数据模型设计。

下面以foods.js为例来讲解如何编写model。代码如下所示。这里由于没有数据库(涉及数据库的话对于新手来说比较麻烦,为了讲清楚过程本文将不采用数据库存储数据),我将所有数据使用json文件存储,例如foods.json中存储了主页的所有食品的数据。foods model将对外提供接口,用于支持访问主页的食品数据,修改食品数据等操作(数据库常说的增删查改CRUD四个操作)。本项目只需要用到查询所有视频的操作,所以我这里简单实现了一个获取所有食品的方法,另外附带一个根据id获取单个食品的方法(这个方法仅是示例,没有用到)。

model里面的模块一般提供数据操作的服务供控制器使用,所以在这一层就主要关注实现数据CRUD操作即可,基本没有什么业务逻辑了。

照着写foods的思路,我们再把detail写完,整个项目就完成了。是不是挺简单的。进到项目目录下面,使用node server.js启动服务器跑一跑吧。

最后,看完整个项目,你大概可以发现整个编写过程,或者说每个模块的划分,都好像遵照某种特定的模式在进行,其实我是按照MVC的模式来编写这个项目的,最近在另外一门学课的学习中也经常用到MVC,觉得还是挺不错的一种设计模式,有兴趣可以研究一下。当然,我不能说我写的代码完全符合MVC的规范,毕竟每个人的理解都可能有那么一些出入。本文仅供参考,欢迎交流建议,谢谢!

标签: 基于nodejs的api框架

本文链接地址:https://www.jiuchutong.com/biancheng/377916.html 转载请保留说明!

上一篇:前端自动化开发之Node.js的环境搭建教程(前端自动化开发软件)

下一篇:Node.js之网络通讯模块实现浅析(node.js网站)

  • 实收资本怎么交所得税
  • 劳务费个人所得税由谁申报
  • 什么叫做供应链公司
  • 网上申购到发行多长时间
  • 邮寄文件快递费账务处理
  • 个人所得税怎么交
  • 商业零售企业实行增值税后购进商品业务的账务处理
  • 已认证抵扣的进项发票,次月开具红字发票信息表,凭证
  • 外购技术服务费包括哪些
  • 收到对方的预付款,需要多久开发票
  • 固定资产增值税可以一次性抵扣吗
  • 公司代扣代缴个人所得税能查到吗
  • 朋友借资质汇款到公司要收税吗?
  • 银行存款日记账和现金日记账的区别
  • 土地增值税加计5%扣除年限
  • 农产品零税率
  • 资金账簿印花税税率
  • 印花税资金账簿税率
  • 公司之间过户车辆要交税吗
  • 费用转入本年利润的哪一方
  • 企业银行存款转定期分录怎样操作
  • 个体户个人所得税预缴纳税申报
  • 微软surfacepro3上市时间
  • 赠送产品如何计入成本
  • 什么是汇兑损益,汇兑损益产生的原因有哪些?(10分)
  • 电脑上加速网页的加速器
  • 写一篇推荐书
  • 公司过节发红包怎么入账
  • iphone8plus完美越狱
  • 电脑xmp是啥
  • enw是什么文件
  • searchnav.exe - searchnav是什么进程 有什么用
  • PHP:pg_copy_to()的用法_PostgreSQL函数
  • 代开发票的弊端?
  • 以固定资产对外投资影响现金流量吗
  • 公司每年都有什么费用
  • 父母将住房无偿赠送给子女 增值税
  • php获取ip客户端ip地址
  • 数据分析课
  • 包装物逾期是什么意思
  • 一阶段目标检测算法
  • 学会这两种方式英语
  • timedatectl命令用法
  • 收汇和结汇都有什么
  • 信用减值损失在资产负债表中怎么表示
  • Joe是一款优雅功能强大的Typecho主题功能多上手快
  • 应收利息的会计处理方法
  • 建筑劳务公司适应什么工程
  • 交通费怎么报销
  • 个人劳务费用
  • 管理费用处理的是
  • 法人股东的分红怎么算
  • 进项税额不得抵扣的情况
  • 分公司注销怎么起诉公司
  • 融资租赁租出的固定资产账务处理
  • 企业所得税纳税申报表
  • 不动产在建工程领用原材料进项税额可以抵扣吗
  • 研发部门的房租可以资本化
  • 托收承付方式销售商品是什么意思
  • 行政单位基建账并入大账规定
  • 建筑设计行业收费标准
  • 会计处理的步骤
  • 滞纳金冲留底税额怎么算
  • ubuntu16.04.1下 mysql安装和卸载图文教程
  • Win7系统连接vpn失败且提示错误代码868的2种解决方法
  • windows service 2008 r2
  • freebsd使用wifi
  • 在苹果电脑mac上怎么下载
  • scardsvr32.exe - scardsvr32是什么进程 有什么用
  • win11连接win7共享打印机
  • linux ls命令什么意思
  • linux时区问题
  • diskpart ntfs
  • 利用forever和pm2部署node.js项目过程
  • JavaScript控制台输出
  • jquery用什么编写
  • jQuery插件是什么
  • 国家税务网上办税
  • 国税总局云南省税务局官网
  • 国税三所电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设