简单用Nodejs + express 编写接口

news2024/11/24 6:41:09

在这里插入图片描述

文章目录

  • get接口示范
  • post接口示范
  • 注意点


准备工作可以看上一篇文章:文章链接》》

get接口示范

app.get('/', (req, res) => {
    res.send("Hello World");
})

在这里插入图片描述
因为是get接口,所以可以直接在浏览器上请求(端口地址+接口名)
在这里插入图片描述
多写几个 尝试一下:

app.get('/api/login', (req, res) => {
    res.send("api");
})

在这里插入图片描述

在这里插入图片描述

post接口示范

  1. 引入 Express 模块: 首先,确保已经安装 Express 模块并将其引入到你的应用程序中。
const express = require('express');
const app = express();
  1. 设置路由处理程序: 使用 app.post() 方法设置 POST 请求的路由处理程序。该方法接受两个参数,第一个参数是路由路径,第二个参数是处理请求的回调函数。
app.post('/login', (req, res) => {
  // 处理 POST 请求
});
  1. 解析请求体: 在处理 POST 请求之前,通常需要解析请求体中的数据。你可以使用 Express 内置的 express.json()express.urlencoded() 中间件来解析 JSON 格式和 URL 编码格式的请求体数据。
app.use(express.json()); // 解析 JSON 格式的请求体数据
app.use(express.urlencoded({ extended: true })); // 解析 URL 编码格式的请求体数据
  1. 处理请求: 在 POST 请求的路由处理程序中,你可以通过 req.body 对象访问请求体中的数据。根据请求体中的数据执行相应的操作。
app.post('/login', (req, res) => {
  const { username, password } = req.body;
  
  // 在这里执行验证用户名和密码的逻辑
  if (username === 'admin' && password === '123456') {
    res.send('登录成功');
  } else {
    res.status(401).send('用户名或密码错误');
  }
});
  1. 启动服务器: 最后,使用 app.listen() 方法启动 Express 服务器,并指定监听的端口号。
app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

这样,你的 Express 应用程序就能够处理 POST 请求了。记得根据你的实际需求,进行相应的处理和验证逻辑。

注意点

当使用 Node.js 和 Express 编写接口时,有几个注意点需要考虑:

  1. 错误处理: 确保在你的应用程序中实现了良好的错误处理机制。这包括捕获并处理同步和异步错误,以及返回适当的错误状态码和错误消息给客户端。

  2. 安全性: 考虑安全性是非常重要的。避免使用过时的依赖项,及时更新依赖项以修复可能存在的安全漏洞。另外,确保对用户输入进行验证和清理,以防止常见的安全问题,如 SQL 注入、跨站点脚本(XSS)等。

  3. 中间件: Express 中间件是扩展框架功能的一种强大方式。合理地使用中间件可以简化代码、增强安全性、提高性能等。但要注意中间件的顺序,确保它们按照正确的顺序执行。

  4. 路由组织: 良好的路由组织可以使代码更易于维护和理解。考虑将路由分割成多个文件,并使用 Express 的 Router 功能来组织和管理它们。

  5. 日志记录: 记录请求和响应信息对于故障排除和监控应用程序性能非常重要。使用适当的日志记录工具或中间件来记录请求、响应和错误信息。

  6. 性能优化: 考虑性能优化是至关重要的。这包括使用适当的缓存机制、压缩响应数据、使用 CDN 加速静态资产等。另外,确保适当地使用异步操作和避免阻塞操作,以提高应用程序的响应性能。

  7. 测试: 编写单元测试和集成测试是确保应用程序质量的重要手段。使用测试框架来编写和运行测试,并确保测试覆盖了应用程序的各个方面。

  8. 版本控制: 使用版本控制系统(如 Git)来管理代码,并定期提交和推送代码更改。这样可以确保团队成员之间的协作,并使代码更易于追踪和恢复。

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 二叉数(1)

一、认识树 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点: 有一个特殊的…

零基础入门NLP - 新闻文本分类比赛方案分享 nano- Rank1

nano- 康一帅 简介 环境 Tensorflow 1.14.0Keras 2.3.1bert4keras 0.8.4 文件说明 EDA:用于探索性数据分析。data_utils:用于预训练语料的构建。pretraining:用于Bert的预训练。train:用于新闻文本分类模型的训练。pred&a…

Celery使用异步、定时任务使用

一、什么是Celery 1.1、celery是什么 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度。 Celery的架构由三部分组成,消息中间件(message broker&#xf…

网络安全加密算法---对称加密

三位同学一组完成数据的对称加密传输。 三位同学分别扮演图中 A、B 和 KDC 三个角色,说明 KA、KB,KAB 和发送的数据Data 的内容。 给出图中 2 和 3 中的数据,以及 Data 加密后的密文。可以完成多轮角色互换的通信 过程。其中一轮过程要求 K…

【Entity Framework】聊聊EF中键

【Entity Framework】聊聊EF中键 文章目录 【Entity Framework】聊聊EF中键一、概述二、配置主键2.1 约定配置主键2.2 单个属性配置为实体主键2.3 组合主键 三、主键名称四、键类型和值五、备用键 一、概述 键用作每个实体实例的唯一标识符。EF中的大多数实体都有一个键&#…

Vue2电商前台项目(三):完成Search搜索模块业务

目录 一、请求数据并展示 1.写Search模块的接口 2.写Vuex中的search仓库(三连环) 3.组件拿到search仓库的数据 用getters简化仓库中的数据 4.渲染商品数据到页面 5.search模块根据不同的参数获取数据展示 (1)把派发actions…

layui中对table表格内容鼠标移入显示 tips内容

要在Layui中的表格中实现鼠标移入显示Tips,你可以使用Layui的事件监听和Tips组件。 有两种实现方式! 第一种是,通过自定义鼠标事件显示 tips。在渲染 table 时,对 filed 进行重构,增加相应的选择器标识,一…

冯喜运:4.10晚间黄金原油走势分析

黄金消息技术面分析:美国CPI年率创半年新高,美国3月未季调CPI年率录得3.5%,高于预期的3.4%水平,为2023年9月以来最高水平。美国CPI高于预期,现货黄金短线下挫16美元。日线当前的指标macd依旧属于金叉放量运行&#xff…

unipush+个推实现消息推送

1.注册个推平台的帐号个推,专业的数据智能服务商-为垂直领域提供数据智能解决方案 2.应用列表中选择新增应用/服务 3.填写下应用信息4.创建好应用后在manifest.json中的sdkConfigs配置上写入appid、appkey、appsecret "sdkConfigs" : {"ad" :…

tailwindcss+vue3+vite+preline项目搭建

最近原子化样式比较火,用了一下确实还不错,也确实是用一些标准的样式能够使网页看起来比较统一,而且能够极大的减轻起名字的压力,有利有弊,就不一一细说了。 之前开发都是习惯于使用vitevue3来开发的,此次搭…

ITK 重采样 resample

Itk 重新采样有二多种情况&#xff0c;这里说二种情况 1. 输入参数 &#xff0c;和输出相关数据&#xff0c;输出范围&#xff0c;spacing &#xff1b; typedef itk::Image< float, 3 > itkFloatImageType;typedef itk::ResampleImageFilter < itkFloatImageType, i…

观察者模式与发布-订阅模式的对决

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

基础算法(算法竞赛、蓝桥杯)--堆排序

1、B站视频链接&#xff1a;A15 堆 堆排序_哔哩哔哩_bilibili 题目链接&#xff1a;【模板】堆 - 洛谷 #include <iostream> using namespace std; int a[1000010],cnt; void up(int u){ //上浮if(u/2 && a[u/2]>a[u]) swap(a[u],a[u/2]), up(u/2); } void d…

练习题(2024/4/10)

1. 删除有序数组中的重复项 给你一个 非严格递增排列 的数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使每个元素 只出现一次 &#xff0c;返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。 考虑 nums 的唯一元…

Vue3---基础1(认识,创建)

变化 相对于Vue2&#xff0c;Vue3的变化&#xff1a; 性能的提升 打包大小减少 41% 初次渲染快 55%&#xff0c;更新渲染快133% 内存减少54% 源码的升级 使用 proxy 代替 defineProperty 实现响应式 重写虚拟 DOM 的实现和 Tree-shaking TypeScript Vue3就可以更好的支持TypeSc…

Harmony鸿蒙南向驱动开发-MMC

MMC&#xff08;MultiMedia Card&#xff09;即多媒体卡&#xff0c;是一种用于固态非易失性存储的小体积大容量的快闪存储卡。 MMC后续泛指一个接口协定&#xff08;一种卡式&#xff09;&#xff0c;能符合这种接口的内存器都可称作MMC储存体。主要包括几个部分&#xff1a;…

【java工具-灵活拉取数据库表结构和数据】

需求&#xff1a; 假设我们现在有一个需求&#xff0c;需要快速拉取数据库的某些表建表语句&#xff0c;和数据&#xff0c;平时做备份之类&#xff1b; 我这边自己写了个工具&#xff0c;不多废话&#xff0c;也不整虚的&#xff0c; 直接看代码&#xff1a; package com.…

SQL注入sqli_labs靶场第五、六题

第五题 根据报错信息&#xff0c;判断为单引号注入 没有发现回显点 方法&#xff1a;布尔盲注&#xff08;太耗时&#xff0c;不推荐使用&#xff09; 1&#xff09;猜解数据库名字&#xff1a;&#xff08;所有ASCII码值范围&#xff1a;0~127&#xff09; ?id1 and length…

Redis从入门到精通(四)Redis实战(一)短信登录

文章目录 前言第4章 Redis实战4.1 短信登录4.1.1 基于session实现短信登录4.1.1.1 短信登录逻辑梳理4.1.1.2 创建测试项目4.1.1.3 实现发送短信验证码功能4.1.1.4 实现用户登录功能4.1.1.5 实现登录拦截功能4.1.1.6 session共享问题 4.1.2 基于Redis实现短信登录4.1.2.1 Key-Va…

Web3 游戏周报(3.31-4.6)

【3.31-4.6】Web3 游戏行业动态&#xff1a; Xai 基金会宣布与 Reboot 达成合作拟支持 Pixel Vault: BattiePlan 游戏生态迁移 加密游戏 Hytopia 在节点销售获得 800 万美元后将于本月推出测试版 新加坡 Web3 游戏初创公司 Gomble Games 完成 1,000 万融资 NFT 卡牌游戏 Par…