联系官方销售客服

1835022288

028-61286886

应用插件 版主:官方插件技术组
怎么使用用户登录接口登录授权码登录账号返回一个是什么意思
类型:迅睿CMS 更新时间:2021-07-14 23:28:06 登录 用户 接口

怎么使用:用户登录接口(登录授权码)

image登录账号返回一个form?是什么意思

回帖
  • 官方插件技术-何老师
    #1楼    官方插件技术-何老师
    2021-07-14 22:43:42
    Chrome 0
    登录账号返回一个form说明不是post方式啊参考文档:《用户登录接口(登录授权码)》
  • 王兴业
    #2楼    王兴业
    2021-07-14 22:55:17
    Chrome 0
    需要post请求
  • haoming04
    #3楼    haoming04
    2021-07-14 23:08:29
    Chrome 0
    请求方式不对,你这是get请求,提交都要改成post请求
  • 834427951
    #4楼    834427951
    2021-07-14 23:09:10
    Chrome 0
    官方插件技术-何老师
    image
    物我提交的是post方式
  • 官方插件技术-何老师
    #5楼    官方插件技术-何老师
    2021-07-14 23:11:26
    Chrome 0
    不一定是post,
    image
    这个应该不是post的参数具体你看看你客户端的文档 参数规范性,每个客户端语言几乎不一样,总之你这个一定不是post
  • 834427951
    #6楼    834427951
    2021-07-14 23:12:00
    Chrome 0
    官方插件技术-何老师 好的,谢谢老师,我检查下
  • 在路上
    #7楼    在路上
    2021-07-14 23:12:03
    Chrome 0
    axios的post请求不是你这么写的呢
  • 834427951
    #8楼    834427951
    2021-07-14 23:14:44
    Chrome 0
    在路上 大佬,可否赐教一下小弟
  • 初次使用
    #9楼    初次使用
    2021-07-14 23:17:04
    Chrome 0
    要做的需求很简单,就是一个axios的简单请求,如下:
    axios({
        method: 'post',
        url: '/api/login',
        data: {
            username,
            pwd
        }})
    但是问题来了,后端说取不到我的username和pwd,问题又来了,我确实传过去了,黑人问号脸???,然后我找了一下资料,终于把值成功传过去,后端也成功取到了。原因:后端用的框架是 spring mvc ,并且在这个方法上使用了注解 @RequestParam,这个就只能从请求的地址中取出参数,也就是只能从 username=admin&pwd=11111 这种字符串中解析出参数,也就是编码格式(content-type)为:application/x-www-form-urlencode。(表单form的enctype属性的编码方式有两种:application/x-www-form-urlencode和multipart/form-data),但是axios会把请求的数据转换成json格式,即为:application/json;charset=UTF-8,所以格式不同,就取不值了。解决方案我尝试了有6种,大家可以根据自己的需求选择:1.用 URLSearchParams
    let param = new URLSearchParams()param.append('username', 'admin')param.append('pwd', 'admin')
    axios({
        method: 'post',
        url: '/api/login',
        data: param
    })
    缺点:兼容性不太好。2.设置Content-Type(1)axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded'; 或者:{headers:{'Content-Type':'application/x-www-form-urlencoded'}} (2)引入 qs (这个库是 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.设置transformRequest因为我们的请求编码格式是被axios更改的,那我们也可以进去设置,如下:
    import Qs from 'qs'axios({
        url: '/api/login',
        method: 'post',
        transformRequest: [function(data){       
             // 对 data 进行任意转换处理        
            return Qs.stringify(data)
        }],
        headers: {
            'deviceCode': 'A95ZEF1-47B5-AC90BF3'    },
        data: {
            username: 'admin',
            pwd: 'admin'    }
    })
    4.重写一个 axios 实例,重新实现属于我们自己的 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.我们知道服务端用的是 @RequestParam(通过字符串解析出参数) ,其实还有另一种是 @RequestBody(从请求体中获取参数),让后端改成 @RequestBody也可以。
    满意答案
  • 张小佛
    #10楼    张小佛
    2021-07-14 23:23:12
    Chrome 0
    你这是请求方式不对,服务端接收的get,并不是post
  • 834427951
    #11楼    834427951
    2021-07-14 23:27:44
    Chrome 0
    初次使用 牛逼,我会了,请求到了,在这里谢谢各位的解答 😀
  • 834427951
    #12楼    834427951
    2021-07-14 23:28:06
    Chrome 0
    @初次使用:66666666666