koa2資料請求相關問題解決方案彙總

2022-07-09 11:03:09 字數 2138 閱讀 1898

前端請求後端資料,難免會遇到如下幾個問題:

1⃣️跨域

2⃣️post/get,其中post請求的方式又分為多種

用koa2的話,如何解決這些問題呢?

一、跨域

前端專案跑在localhost:8080,後端服務跑在localhost:1996

這裡使用跨域中介軟體就能解決上述跨域問題

二、post請求資料解析的問題

期間使用了koa-bodyparse中介軟體,但是對於表單資料,不能解析,還要依賴其他中介軟體;

後來發現koa-body中介軟體可以解析所有型別的post請求,包括通過表單提交的檔案(後續有bug)

koabody函式裡面的引數是用來配置檔案上傳的.

需要注意的是,onfilebegin函式裡面對檔名做了處理(保持原有檔名),如果不處理的話,預設上傳檔案的檔名將會是這樣:

配置好koa-body中介軟體之後,下面來測試一下(使用了自定義的formatresponse中介軟體來格式化響應資料):

2.1 get

get請求後台通過ctx.query獲取請求引數

根據之前koabody中介軟體的設定,該請求攜帶的檔案已經上傳到指定資料夾了.

後台通過ctx.request.body獲取請求引數

哦嚯,跨域?不是已經設定的跨域麼?

後來經過多方查閱,好像別人用 koa-body 都沒有出現這個問題,只有我用的時候出了這個bug?

最終解決方案:

在檔案上傳的介面上單獨使用(home.js)

const koabody = require('

koa-body');

const path = require('

path')

var uploadconfig =koabody(`);

//最終要儲存到的資料夾目錄

const dir = path.join(path.resolve(__dirname, '

..'),`public/upload/`);

//重新覆蓋 file.path 屬性

file.path = `$/$`;},}

})home.post(

'/upload

',uploadconfig,async (ctx) =>)

這樣的話,非檔案上傳的post請求會走koa-bodyparser中介軟體,與全域性的koa2-cors中介軟體不會衝突;

檔案上傳的介面走完koa-bodyparser和koa2-cors之後,到介面內部通過koa-body中介軟體來解析資料(包括檔案).

注:另外還有koa-better-body中介軟體,我沒測試,不知道是不是能夠解決和koa2-cors中介軟體的衝突問題和支援檔案上傳.

SpringMVC 請求 響應亂碼問題解決方案

get請求引數是通過請求行中的url傳送給web伺服器 tomcat 的。tomcat伺服器會對url進行編碼操作 此時使用的是tomcat設定的字符集,預設是iso8859 1 到了我們的應用程式中的請求引數,已經是被tomcat使用iso8859 1字符集進行編碼之後的了。修改tomcat配置檔...

Django migrate報錯問題解決方案

python3 manage.py makemigrations 生成資料庫遷移檔案 python3 manage.py migrate 遷移資料庫 簡簡單單兩條命令就完成了django的資料庫遷移 但是今天一天的時間都耽誤在這了,一點都不誇張的那種,早上去公司討論需求之後,研究了一下需要更改一下資...

iOS 網路請求資料回來中文亂碼問題解決方法

我們再新增成員資訊請求時,把中文做一下轉換 nsstring childname nametextfield.text stringbyaddingpercentescapesusingencoding nsutf8stringencoding 在get請求成員資訊列表時,在做一下處理 member...