koa2的post請求引數(三)
阿新 • • 發佈:2019-02-05
對於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請求已經成功