週日有個小夥加我,幫他排查了一下問題。正好記錄一下。前端
前端是:axios
後臺是:koa2
問題:axios
發 post
請求不攜帶參數請求正常,攜帶參數就無響應。ios
由於我也不知道小夥那些說的是真的,那些是假的,那咱們就一點一點排查,我大體定位問題爲如下幾個方向。json
{id: 1}
卻發送的 [object Object]
appliction/json
、application/x-www-form-urlencoded
、multipart/form-data
其中一種這流程沒毛病吧,先找前端自身問題,沒問題就出去懟人。axios
由於不知道小夥水平,就沒看 network
。我讓他直接請求個人接口 https://www.lilnong.top/cors/koa-sf
,而後讓他截圖。
發現數據被收到了,證實前端確定是沒問題的。
微信
開始我懷疑他路由配置有問題。看上去這個路由也沒問題。有請求就應該能收到。
app
原生的話,就是監聽流,而後拼接。cors
new Promise(function(resolve){ let str = '' ctx.req.on('data', (data) => { str += data }) ctx.req.addListener('end', () => { resolve(str) }) })
中間件的話,就是 koa-body
和 koa-bodyparser
之類的,經過小夥的截圖看到以下畫面。支持多種類型,起來也沒問題。
koa
由於小夥是新手嘛,總有可能用一些奇奇怪怪的中間件,看看是否是有什麼檢查阻塞了請求。post
這張圖片上就有疑點了,使用了兩個中間件都是處理 body 的。測試
app.use(bodyParser()) app.user(KoaBody())
用關鍵詞一搜索,妥妥的BUG呀。那咱們把app.use(bodyParser())
一刪就 OK 了。
起服務,刷頁面,測試,OK。
koa-bodyparser
和 koa-body
一塊兒使用會有問題感興趣的小夥伴能夠去看看源碼。
這兩個庫都依賴 co-body
這個庫,這個庫裏面依賴raw-body
。而後下圖能夠看到,使用的仍是流。
koa-bodyparser
和 koa-body