POST 请求如何接收 (1)
获取 Post 请求的步骤:
解析上下文 ctx 中的原生 nodex.js 对象 req.
将 POST 表单数据解析成 query string - 字符串.(例如: user=jspang&age=18)
将字符串转换成 JSON 格式.
ctx.request 和 ctx.req 的区别
ctx.request: 是 Koa2 中 context 经过封装的请求对象, 它用起来更直观和简单.
ctx.req: 是 context 提供的 node.js 原生 HTTP 请求对象. 这个虽然不那么直观, 但是可以得到更多的内容, 适合我们深度编程.
ctx.method 得到请求类型
Koa2 中提供了 ctx.method 属性, 可以轻松的得到请求的类型, 然后根据请求类型编写不同的相应方法, 这在工作中非常常用. 我们先来作个小例子, 根据请求类型获得不同的页面内容. GET 请求时得到表单填写页面, POST 请求时, 得到 POST 处理页面.
- const Koa = require('koa');
- const app = new Koa();
- app.use(async(ctx)=>{
- // 当请求时 GET 请求时, 显示表单让用户填写
- if(ctx.url==='/' && ctx.method === 'GET'){
- let html =`
- <h1>Koa2 request post demo</h1>
- <form method="POST" action="/">
- <p>userName</p>
- <input name="userName" /> <br/>
- <p>age</p>
- <input name="age" /> <br/>
- <p>webSite</p>
- <input name='webSite' /><br/>
- <button type="submit">submit</button>
- </form>
- `;
- ctx.body =html;
- // 当请求时 POST 请求时
- }else if(ctx.url==='/' && ctx.method === 'POST'){
- ctx.body='接收到请求';
- }else{
- // 其它请求显示 404 页面
- ctx.body='<h1>404!</h1>';
- }
- })
- app.listen(3000,()=>{
- console.log('[demo] server is starting at port 3000');
- })
写好这段代码后你可以用 node 命令执行它, 然后再浏览器中输入 http://127.0.0.1:3000 进行查看, 第一次进入时给我们展现的是一个表单页面, 我们点击提交后可以看到服务器接收到了我们的信息, 但我们并没有做出任何处理. 当我们下输入一个地址时, 它会提示 404 错误.
来源: http://www.bubuko.com/infodetail-2622973.html