Skip to main content

网络请求

与后台通讯有 4 个方法,get, post, put, del,这些方法是对 fetch 的简单封装。

restful 规范定义了各种方法的用途,但 ReactGO 并不要求严格遵守这些规则, 因为前后端都是你控制的,使用哪个方法由你自己决定,但是参考 restful 总是有意义的。

所有上面的方法在 src/rest.js 文件中定义。 putpost 的用法一样,getdel 的用法一样。

getdel 不能有 body,但是可以带 query 参数(?xx=yy&cc=dd 这样的)。 可能你关心 query 参数重包含敏感信息是否安全,简单的回答是"是的,https 会保护 query 字符串", 详细的回答可以参考这里:https://https.cio.gov/faq/

提交数据

提交数据使用 URLSearchParams 作为 body,如下。

import { put } from "~/rest";

try {
await put('path', new URLSearchParams({
a: 1, b: 2, c: 3
}));
} catch (err) {
enqueueSnackbar(err.message, { variant: 'error' });
}

上传文件

上传文件使用 FormData 作为 body,如下。

try {
const form = new FormData();

form.append('avatar', blob, 'file.png');

await put('path', form);
} catch (err) {
enqueueSnackbar(err.message);
}

预定义行为

如果服务器响应 401(Unauthorized),那么会自动弹出一个 认证失败,请重新登录 的提示,然后跳转到登录页面。因为服务器只有在认证失败的情况下才会响应 401,在开发后台代码时, 需要遵守这一约定。