四.Koa2基礎(chǔ)教程04POST請(qǐng)求接收1

這節(jié)主要學(xué)習(xí)POST請(qǐng)求的接受方法。對(duì)于POST請(qǐng)求的處理,Koa2沒有封裝方便的獲取參數(shù)的方法,需要通過解析上下文context中的原生node.js請(qǐng)求對(duì)象req來獲取。

獲取Post請(qǐng)求的步驟:

  1. 解析上下文ctx中的原生nodex.js對(duì)象req。
  2. 將POST表單數(shù)據(jù)解析成query string-字符串.(例如:user=jspang&age=18)
  3. 將字符串轉(zhuǎn)換成JSON格式。

ctx.request和ctx.req的區(qū)別

  • ctx.request:是Koa2中context經(jīng)過封裝的請(qǐng)求對(duì)象,它用起來更直觀和簡單。
  • ctx.req:是context提供的node.js原生HTTP請(qǐng)求對(duì)象。這個(gè)雖然不那么直觀,但是可以得到更多的內(nèi)容,適合我們深度編程。

ctx.method 得到請(qǐng)求類型
Koa2中提供了ctx.method屬性,可以輕松的得到請(qǐng)求的類型,然后根據(jù)請(qǐng)求類型編寫不同的相應(yīng)方法,這在工作中非常常用。我們先來作個(gè)小例子,根據(jù)請(qǐng)求類型獲得不同的頁面內(nèi)容。GET請(qǐng)求時(shí)得到表單填寫頁面,POST請(qǐng)求時(shí),得到POST處理頁面。

const Koa = require('koa');
const app = new Koa();
app.use(async(ctx)=>{
    //當(dāng)請(qǐng)求時(shí)GET請(qǐng)求時(shí),顯示表單讓用戶填寫
    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;
    //當(dāng)請(qǐng)求時(shí)POST請(qǐng)求時(shí)
    }else if(ctx.url==='/' && ctx.method === 'POST'){
        ctx.body='接收到請(qǐng)求';
    }else{
        //其它請(qǐng)求顯示404頁面
        ctx.body='<h1>404!</h1>';
    }
})
 
app.listen(3000,()=>{
    console.log('[demo] server is starting at port 3000');
})
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容