1. 程式人生 > >koa2的post請求引數(三)

koa2的post請求引數(三)

對於POST請求的處理,Koa2沒有封裝方便的獲取引數的方法,需要通過解析上下文context中的原生node.js請求物件req來獲取。

獲取koa2的post請求的步驟:

1.解析上下文ctx中的原生nodex.js物件req。
2.將POST表單資料解析成query string-字串。
3.將字串轉換成JSON格式。

ctx.requset跟ctx.req的具體區別,對於我們做深度程式設計時,有很大的幫助:

ctx.request:是Koa2中context經過封裝的請求物件,它用起來更直觀和簡單。
ctx.req:是context提供的node.js原生HTTP請求物件。這個雖然不那麼直觀,但是可以得到更多的內容,適合我們深度程式設計。

ctx.method可以得到請求的型別,方便我們判斷是什麼請求型別,進行不同的操作。

const Koa = require('koa');
const app = new Koa();
app.use(async(ctx)=>{
    //當請求時GET請求時,顯示錶單讓使用者填寫
    // 我們利用上文中說到的ctx.method判斷請求的型別
    if(ctx.url==='/' && ctx.method === 'GET'){
        let html =`
            <form method="POST"  action="/">
                <p>userName</p>
                <input name="name" /> <br/>
                <p>age</p>
                <input name="sex" /> <br/>
                <p>webSite</p>
                <input name='way' /><br/>
                <button type="submit">submit</button>
            </form>
        `;
        // 如果是get請求我們把這個表單進行顯示,當點選提交按鈕時,我們以post的方式進行提交
        ctx.body =html;
        //當請求時POST請求時
    }else if(ctx.url==='/' && ctx.method === 'POST'){
        // 當請求為post請求的時候,我們在頁面中顯示下面的這句話,證明我們post請求引數是成功的
        ctx.body='接收到請求';
    }
})

app.listen(3001,()=>{
    console.log('success on port 3001');
})

當我們用node index.js啟動後會在命令列看到‘success on port 3001’,說明我們的程式碼沒有錯,已經正常啟動,我們開啟瀏覽器,輸入localhost:3001,頁面會出現如下圖所示的表單:


我們隨便輸入一些值,點選submit提交按鈕後,出現如下圖所示:


說明我們的post請求已經成功