繁体   English   中英

如何从 React js 向 Node js 发送请求来处理某些东西?

[英]How to send requests from React js to Node js to process something?

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

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

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

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

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

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

我非常努力地寻找相关文章,但我只能找到基本的“一次性” api 调用,我应该为整批操作做什么?

我猜当您谈论请求和 API 时,您谈论的是 HTTP 请求和 REST API,它们基本上是“无状态”的东西; HTTP 请求是自包含的,后端不必在请求之间跟踪任何应用程序 state 以便说出 HTTP。

但后端应用程序通常会维护 state,通常以数据库的形式。 例如,许多 REST API 公开了重要业务实体的 CRUD(创建、读取、更新和删除)操作——事实上,Stack Overflow 可能正是这样做的答案。 当我发布这个答案时,我的浏览器可能会发送某种“创建”请求,当我不可避免地注意到并修复错字时,我会发送某种“更新”请求。 当您在浏览器中加载它时,您将发送一个“读取”请求,该请求将从 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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM