Koa2的post請求獲取參數


對於post請求處理,koa2沒有封裝輕便的方法獲取參數,需要通過解析上下文context中的原生node.js請求對象req來獲取。

獲取koa2post請求步驟:

  1. 解析上下文ctx中的原生nodex.js對象req。
  2. 將post表單數據解析成query String -字符串
  3. 將字符串轉換成json格式

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

  1. ctx.request:是Koa2中context經過封裝的請求對象,它用起來更直觀和簡單。
  2. 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提交按鈕后,出現如下圖所示:

 

原文:https://blog.csdn.net/Lschange/article/details/80590775

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM