如何将请求从 React js 发送到 Node js 来处理一些东西?

How to send requests from React js to Node js to process something?

我很抱歉我在标题中提出了这个问题,但我最近才开始编程,所以再次,我真的很抱歉。

我正在开发一个以 React js 作为我的 front-end 和 node js 作为我的后端的项目,我已经成功地进行了一些基本测试 api 调用以确认两者之间的连接但是现在,我应该如何实际处理不同的动作。例如,当用户登录时,我需要先检查他们是否是现有用户,如果不是则登录,删除用户帐户,更改用户名等。

我非常努力地寻找相关文章,但我只能找到基本的“one-time”api 调用,我应该为整个批次做什么of operations?据我了解,从React发送请求到Node js处理的过程是这样的:

react js ======> 
(request for operation) node js ======> 
(process the operation) ======> 
send a response back to react

如果我的问题有任何错误,请指正... 非常感谢!

这个问题真的很宽泛,所以我将重点关注这一部分:

I tried very hard to look for relevant articles but all I can find are basic "one-time" api calls, what am I supposed to do for an entire batch of operations?

我猜当您谈论请求和 API 时,您是在谈论 HTTP 请求和 REST API,它们基本上是“无状态”的东西; HTTP 请求是独立的,后端 不必 跟踪请求之间的任何应用程序状态即可使用 HTTP。

但是后端应用程序通常会维护状态,通常以数据库的形式。例如,许多 REST API 公开了重要业务实体的 CRUD(创建、读取、更新和删除)操作——事实上,Stack Overflow 可能正是这样做的。当我 post 这个答案时,我的浏览器可能会发送某种“创建”请求,而当我不可避免地注意到并修复拼写错误时,我会发送某种“更新”请求。当您在浏览器中加载它时,您将发送一个“读取”请求,该请求将从 Stack Overflow 的数据库中获取答案文本。 Stack Overflow 的后端在请求之间跟踪我的回答,这使得它可以作为许多不同请求的一部分发送给许多用户。

如果您的项目执行涉及多个相互依赖的请求的事情,您的前端将不得不做类似的事情——例如,您需要跟踪用户是否通过身份验证以便向他们显示登录屏幕,并且您需要持有他们的身份验证令牌才能与后续请求一起发送。


编辑:让我们看一个具体的例子。作为用户,我希望能够创建和阅读笔记。每个笔记都应该有一个唯一的 ID 和一个文本字符串。在后端,我们将有一组 CRUD 端点:

var express = require(“express”);
var router = express.Router();

class Note {
    constructor(id, text) {
        this.id = id;
        this.text = text;
    }
}

// This is a quick and dirty database!
notes = {};

router.put("/note/:id", function(req, res) {
    notes[req.params.id] = "hello"; // TODO: accept text as well
    res.send("");
});

router.get(“/note/:id”, function(req, res) {
    res.send(notes[req.params.id].text);
});

module.exports = router;

然后在客户端,可以创建一个笔记,然后像这样阅读它:

// this request will create the note
fetch("http://localhost:9000/note/42", { method: 'PUT', body: 'hello note!' });

// this request will read the note, but only after it is created!
fetch("http://localhost:9000/note/42")
        .then(res => res.text())
        .then(res => console.log(res));