Representational

简介: 【10月更文挑战第25天】

REST(Representational State Transfer)是一种软件架构风格,用于设计网络应用程序。它利用HTTP协议的功能来处理数据和交互。RESTful架构的核心思想是客户端通过使用HTTP方法来“转移”关于资源的状态,而服务器提供这些资源的表现形式。

在REST架构中,常用的HTTP方法包括:

  • GET:请求从服务器获取数据。
  • POST:请求在服务器上创建新的资源。
  • PUT:请求更新服务器上的资源。
  • DELETE:请求删除服务器上的资源。

RESTful Web Services是基于REST架构风格的Web服务。它们通常使用HTTP协议、URI和标准数据格式(如XML或JSON)来交换数据。RESTful服务易于使用,可以被各种客户端访问,包括浏览器、移动应用和第三方应用程序。

下面是一个使用Node.js和Express框架创建的简单RESTful API的示例。这个API可以处理用户信息的获取、添加、删除和查询。

首先,确保你已经安装了Node.js和Express。然后创建一个名为server.js的文件,并添加以下代码:

var express = require('express');
var app = express();
var fs = require('fs');
var usersData = require('./users.json'); // 引入users.json数据

// 获取用户列表
app.get('/listUsers', function (req, res) {
   
    res.json(usersData);
});

// 添加新用户
app.post('/addUser', function (req, res) {
   
    var newUser = req.body;
    usersData[newUser.id] = newUser;
    fs.writeFile(__dirname + "/users.json", JSON.stringify(usersData, null, 2), err => {
   
        if (err) {
   
            res.status(500).send('Unable to write to file.');
        } else {
   
            res.status(201).send('User added successfully.');
        }
    });
});

// 删除用户
app.delete('/deleteUser/:id', function (req, res) {
   
    var userId = req.params.id;
    delete usersData[userId];
    fs.writeFile(__dirname + "/users.json", JSON.stringify(usersData, null, 2), err => {
   
        if (err) {
   
            res.status(500).send('Unable to write to file.');
        } else {
   
            res.status(200).send('User deleted successfully.');
        }
    });
});

// 获取用户详细信息
app.get('/:id', function (req, res) {
   
    var userId = req.params.id;
    var user = usersData[userId];
    if (user) {
   
        res.json(user);
    } else {
   
        res.status(404).send('User not found.');
    }
});

var server = app.listen(8081, function () {
   
    var host = server.address().address;
    var port = server.address().port;
    console.log("应用实例,访问地址为 http://%s:%s", host, port);
});

在这个示例中,我们定义了四个路由:

  1. /listUsers:使用GET方法获取所有用户的信息。
    2 /addUser:使用POST方法添加一个新用户。
  2. /deleteUser/:id:使用DELETE方法根据ID删除一个用户。
  3. /:id:使用GET方法根据ID获取一个用户的详细信息。

请注意,这个示例使用了同步的方式读取和写入文件,这在生产环境中可能不是最佳实践,因为它可能会导致性能问题。在实际应用中,你可能需要考虑使用数据库来存储用户数据,并且使用异步I/O操作来提高性能。

要运行这个服务器,你需要在同一个目录下创建一个名为users.json的文件,内容如下:

{
   
    "user1": {
   
        "name": "mahesh",
        "password": "password1",
        "profession": "teacher",
        "id": "1"
    },
    "user2": {
   
        "name": "suresh",
        "password": "password2",
        "profession": "librarian",
        "id": "2"
    },
    "user3": {
   
        "name": "ramesh",
        "password": "password3",
        "profession": "clerk",
        "id": "3"
    }
}
目录
相关文章
|
Web App开发 分布式计算 小程序
什么是云计算,云计算在未来有什么作用?
简要介绍云计算及云计算作用
8370 0
|
Web App开发 监控 Kubernetes
容器技术入门3:chaos混沌工程
参加冬季实战营第四期:零基础容器技术实战。参加学习一下,教程很好,做笔记记录一下。本文记录冬季实战营第四期:零基础容器技术实战动手实战-Chaos带你快速上手混沌工程。
1777 0
容器技术入门3:chaos混沌工程
|
定位技术 开发工具 开发者
为了让外卖小哥在地图里开上火箭🚀我用FLutter自定义了地图
花了五天时间,用Flutter自定义地图是什么体验?外卖小哥都开上火箭了?什么?我被女朋友赶出家门啦?欢迎观看被女友赶出家门之开火箭送外卖篇~
|
7月前
|
机器学习/深度学习 PyTorch API
PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践
本文深入探讨神经网络模型量化技术,重点讲解训练后量化(PTQ)与量化感知训练(QAT)两种主流方法。PTQ通过校准数据集确定量化参数,快速实现模型压缩,但精度损失较大;QAT在训练中引入伪量化操作,使模型适应低精度环境,显著提升量化后性能。文章结合PyTorch实现细节,介绍Eager模式、FX图模式及PyTorch 2导出量化等工具,并分享大语言模型Int4/Int8混合精度实践。最后总结量化最佳策略,包括逐通道量化、混合精度设置及目标硬件适配,助力高效部署深度学习模型。
1073 21
PyTorch量化感知训练技术:模型压缩与高精度边缘部署实践
|
3月前
|
Java 数据库连接 网络安全
SSH框架的核心原理与工作流程解析
以上描述了SSH框架中各个部分的职责和大致的工作流程,详细运作时还涉及更多的组件和配置细节,每个部分都有相应的最佳实践和性能调优策略,但这些都建立在理解其核心原理基础之上。
380 11
|
10月前
|
弹性计算 人工智能 API
基于ECS部署DeepSeek个人专属AI网站
本方案介绍了如何基于云服务器ECS集成百炼API和Open WebUI服务,一键部署体验DeepSeek个人专属AI网站。用户不仅可以以极低的成本,拥有个人专属的AI网站,进行稳定的AI对话,还能够切换DeepSeek-V3、DeepSeek-R1、Qwen-max等模型进行体验。同时Open WebUI还具备开源能力,支持定制工具的开发。您还可以创建其他子账号,将您的专属AI网站分享给他人使用。
|
3月前
|
存储 JSON 对象存储
零门槛玩转向量引擎!阿里云 Milvus 无代码全流程实操指南
阿里云Milvus版是企业级向量引擎,支持非结构化数据语义检索。全托管架构、开源兼容,助力智能驾驶、电商推荐、智能客服等场景实现毫秒级精准匹配,无代码操作让AI落地更高效。
356 0
|
9月前
|
存储 大数据 数据处理
您有一份 Apache Flink 社区年度报告请查收~
您有一份 Apache Flink 社区年度报告请查收~
152 0
|
4月前
|
数据采集 运维 监控
|
开发工具 git
【Mac 系统】解决git clone速度慢
本文提供了解决Mac系统上使用git clone时速度慢的问题的方法。
672 0