GET 请求和参数传递
自由传参模式
在 /app/router.js 文件中进行路由配置
router.get('/request', controller.home.request);
打开/app/controller/home.js 文件,写一个 request 的方法。
async request() {
const { ctx } = this;
ctx.body = ctx.query;
}
通过浏览器访问
http://127.0.0.1:7001/request?name=小明&age=16
页面会显示
{
"name": "小明",
"age": "16"
}
严格传参模式
传递的参数个数、顺序、名称都是固定的
在 router.js 文件中,设置指定参数
router.get('/request/:name/:age', controller.home.request);
打开/app/controller/home.js 文件,写一个 request 的方法。
async request() {
const { ctx } = this;
ctx.body = ctx.params;
}
通过浏览器访问,这个时候的访问URL不在是用?来开始传递参数了,而是直接用/ 左斜杠来传递。传参或者多传参数,都会报错。
http://127.0.0.1:7001/request/小明/16
POST 请求和参数的接收
在 /app/router.js 文件中进行路由配置
router.post('/request', controller.home.request);
打开/app/controller/home.js 文件,写一个 request 的方法。
async request() {
const { ctx } = this;
ctx.body = {
status: 200,
data: ctx.request.body
}
}
POST 请求可以通过工具发出,例如: Postman 软件、VSCode 插件 REST Client
安全设置解除
当你第一次请求时,可能会返回 403 错误,返回 message: "invalid csrf token" ,这是因为 Egg.js 默认开启了CSRF安全策略.
CSRF的全名为 Cross-site request forgery, 它的中文名为 伪造跨站请求。
打开 /config/config/default.js 文件,配置 CSRF
config.security = {
csrf :{
enable:false,
}
};
跨域配置 安装 egg-cors
npm i egg-cors --save
配置 /config/plugin.js 文件
exports.cors = {
enable: true,
package: 'egg-cors',
};
配置 /config/config/default.js 文件
// 允许跨域的方法
config.cors = {
origin:'*', // security.domainWhiteList 失效
allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH'
}