迅睿CMS框架是一款PHP8高性能·簡(jiǎn)單易用的CMS開源開發(fā)框架,基于MIT開源許可協(xié)議發(fā)布,免費(fèi)且不限制商業(yè)使用,是免費(fèi)開源的產(chǎn)品,以萬端互聯(lián)為設(shè)計(jì)理念,支持的微信公眾號(hào)、小程序、APP客戶端、移動(dòng)端網(wǎng)站、PC網(wǎng)站等多終端式管理系統(tǒng)。
聯(lián)系官方銷售客服
1835022288
028-61286886
怎么使用:用戶登錄接口(登錄授權(quán)碼)
登錄賬號(hào)返回一個(gè)form?是什么意思
登錄賬號(hào)返回一個(gè)form說明不是post方式啊
參考文檔:《用戶登錄接口(登錄授權(quán)碼)》
需要post請(qǐng)求
請(qǐng)求方式不對(duì),你這是get請(qǐng)求,提交都要改成post請(qǐng)求
回復(fù)@官方插件技術(shù)-何老師 物我提交的是post方式
不一定是post,這個(gè)應(yīng)該不是post的參數(shù)具體你看看你客戶端的文檔 參數(shù)規(guī)范性,每個(gè)客戶端語言幾乎不一樣,總之你這個(gè)一定不是post
回復(fù)@官方插件技術(shù)-何老師 好的,謝謝老師,我檢查下
axios的post請(qǐng)求不是你這么寫的呢
回復(fù)@在路上 大佬,可否賜教一下小弟
要做的需求很簡(jiǎn)單,就是一個(gè)axios的簡(jiǎn)單請(qǐng)求,如下:
axios({ method: 'post', url: '/api/login', data: { username, pwd }})
但是問題來了,后端說取不到我的username和pwd,問題又來了,我確實(shí)傳過去了,黑人問號(hào)臉???,然后我找了一下資料,終于把值成功傳過去,后端也成功取到了。
原因:后端用的框架是 spring mvc ,并且在這個(gè)方法上使用了注解 @RequestParam,這個(gè)就只能從請(qǐng)求的地址中取出參數(shù),也就是只能從 username=admin&pwd=11111 這種字符串中解析出參數(shù),也就是編碼格式(content-type)為:application/x-www-form-urlencode。(表單form的enctype屬性的編碼方式有兩種:application/x-www-form-urlencode和multipart/form-data),但是axios會(huì)把請(qǐng)求的數(shù)據(jù)轉(zhuǎn)換成json格式,即為:application/json;charset=UTF-8,所以格式不同,就取不值了。
解決方案我嘗試了有6種,大家可以根據(jù)自己的需求選擇:
1.用 URLSearchParams
let param = new URLSearchParams()param.append('username', 'admin')param.append('pwd', 'admin') axios({ method: 'post', url: '/api/login', data: param })
缺點(diǎn):兼容性不太好。
2.設(shè)置Content-Type
(1)axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
或者:{headers:{'Content-Type':'application/x-www-form-urlencoded'}}
(2)引入 qs (這個(gè)庫(kù)是 axios 里面包含的,直接引入,無需下載)。
import Qs from 'qs'let data = { "username": "admin", "pwd": "admin" }axios({ headers: { 'deviceCode': 'A95ZEF1-47B5-AC90BF3' }, method: 'post', url: '/api/login', data: Qs.stringify(data) })
3.設(shè)置transformRequest
因?yàn)槲覀兊恼?qǐng)求編碼格式是被axios更改的,那我們也可以進(jìn)去設(shè)置,如下:
import Qs from 'qs'axios({ url: '/api/login', method: 'post', transformRequest: [function(data){ // 對(duì) data 進(jìn)行任意轉(zhuǎn)換處理 return Qs.stringify(data) }], headers: { 'deviceCode': 'A95ZEF1-47B5-AC90BF3' }, data: { username: 'admin', pwd: 'admin' } })
4.重寫一個(gè) axios 實(shí)例,重新實(shí)現(xiàn)屬于我們自己的 transformRequest
import axios from 'axios'let instance = axios.create({ transformRequest: [function transformRequest(data, headers) { normalizeHeaderName(headers, 'Content-Type'); if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data) ) { return data; } if (utils.isArrayBufferView(data)) { return data.buffer; } if (utils.isURLSearchParams(data)) { setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); return data.toString(); } /*改了這里*/ if (utils.isObject(data)) { setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); let _data = Object.keys(data) return encodeURI(_data.map(name => `${name}=${data[name]}`).join('&')); } return data; }], })
5.axios.post('/api/lockServer/search',"userName='admin'&pwd='admin'");
6.我們知道服務(wù)端用的是 @RequestParam(通過字符串解析出參數(shù)) ,其實(shí)還有另一種是 @RequestBody(從請(qǐng)求體中獲取參數(shù)),讓后端改成 @RequestBody也可以。
你這是請(qǐng)求方式不對(duì),服務(wù)端接收的get,并不是post
回復(fù)@初次使用 牛逼,我會(huì)了,請(qǐng)求到了,在這里謝謝各位的解答 ??
登錄賬號(hào)返回一個(gè)form說明不是post方式啊
參考文檔:《用戶登錄接口(登錄授權(quán)碼)》
需要post請(qǐng)求
請(qǐng)求方式不對(duì),你這是get請(qǐng)求,提交都要改成post請(qǐng)求
回復(fù)@官方插件技術(shù)-何老師

物我提交的是post方式
不一定是post,

這個(gè)應(yīng)該不是post的參數(shù)具體你看看你客戶端的文檔 參數(shù)規(guī)范性,每個(gè)客戶端語言幾乎不一樣,總之你這個(gè)一定不是post
回復(fù)@官方插件技術(shù)-何老師 好的,謝謝老師,我檢查下
axios的post請(qǐng)求不是你這么寫的呢
回復(fù)@在路上 大佬,可否賜教一下小弟
要做的需求很簡(jiǎn)單,就是一個(gè)axios的簡(jiǎn)單請(qǐng)求,如下:
但是問題來了,后端說取不到我的username和pwd,問題又來了,我確實(shí)傳過去了,黑人問號(hào)臉???,然后我找了一下資料,終于把值成功傳過去,后端也成功取到了。
原因:后端用的框架是 spring mvc ,并且在這個(gè)方法上使用了注解 @RequestParam,這個(gè)就只能從請(qǐng)求的地址中取出參數(shù),也就是只能從 username=admin&pwd=11111 這種字符串中解析出參數(shù),也就是編碼格式(content-type)為:application/x-www-form-urlencode。(表單form的enctype屬性的編碼方式有兩種:application/x-www-form-urlencode和multipart/form-data),但是axios會(huì)把請(qǐng)求的數(shù)據(jù)轉(zhuǎn)換成json格式,即為:application/json;charset=UTF-8,所以格式不同,就取不值了。
解決方案我嘗試了有6種,大家可以根據(jù)自己的需求選擇:
1.用 URLSearchParams
缺點(diǎn):兼容性不太好。
2.設(shè)置Content-Type
(1)axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';
或者:{headers:{'Content-Type':'application/x-www-form-urlencoded'}}
(2)引入 qs (這個(gè)庫(kù)是 axios 里面包含的,直接引入,無需下載)。
3.設(shè)置transformRequest
因?yàn)槲覀兊恼?qǐng)求編碼格式是被axios更改的,那我們也可以進(jìn)去設(shè)置,如下:
4.重寫一個(gè) axios 實(shí)例,重新實(shí)現(xiàn)屬于我們自己的 transformRequest
5.axios.post('/api/lockServer/search',"userName='admin'&pwd='admin'");
6.我們知道服務(wù)端用的是 @RequestParam(通過字符串解析出參數(shù)) ,其實(shí)還有另一種是 @RequestBody(從請(qǐng)求體中獲取參數(shù)),讓后端改成 @RequestBody也可以。
你這是請(qǐng)求方式不對(duì),服務(wù)端接收的get,并不是post
回復(fù)@初次使用 牛逼,我會(huì)了,請(qǐng)求到了,在這里謝謝各位的解答 ??