前后端交互-接入接口时注意参数要求的类型-formData

先说问题

  • 在页面接入接口的时候无论怎么调试,后台返回的result数组始终为空
  • 接口文档要求

前后端交互-接入接口时注意参数要求的类型-formData_第1张图片

2.调试结果

前后端交互-接入接口时注意参数要求的类型-formData_第2张图片

可以看到result结果数组是有值的

3.上错误代码

getAccount() {
      let param = {
        ssoWorkbenchId:'1479366526093594626'
      }
      let url = '/sso/ssoWorkbench/listSubAccount'
      httpAction(url, param, 'post').then(res => {
        if (res.success) {
          this.accountList = res.result
        } else {
          this.$message.warning(res.message)
        }
      })
    },

乍一看好像没什么问题对吧

4.页面发送请求时的返回
前后端交互-接入接口时注意参数要求的类型-formData_第3张图片
前后端交互-接入接口时注意参数要求的类型-formData_第4张图片
前后端交互-接入接口时注意参数要求的类型-formData_第5张图片

  • 可以对比一下参数那个id的值都是一样的,我还以为闹了鬼,五分钟抽了八根烟
  • 下面揭晓答案
    1.看一下接口调试时发请求的请求体(正常可以返回值的)是这样的
    前后端交互-接入接口时注意参数要求的类型-formData_第6张图片
    前后端交互-接入接口时注意参数要求的类型-formData_第7张图片
    前后端交互-接入接口时注意参数要求的类型-formData_第8张图片

    他们之间的区别就在于请求参数数据类型不同,可以对比一下两者的载荷,请求不到数据时是请求载荷,正常时是表单数据,也就是说此接口接收的参数类型是表单类型。so?如何解决呢?上代码
  • 改正后代码如下

    getAccount() {
        let param = new FormData()
        param.append('ssoWorkbenchId', '1479366526093594626')
        let url = '/sso/ssoWorkbench/listSubAccount'
        httpAction(url, param, 'post').then(res => {
          if (res.success) {
            this.accountList = res.result
          } else {
            this.$message.warning(res.message)
          }
        })
      },

可以看到返回的数据已经有值了,请求载荷处的描述也已经变化为表单数据了

前后端交互-接入接口时注意参数要求的类型-formData_第9张图片
前后端交互-接入接口时注意参数要求的类型-formData_第10张图片
前后端交互-接入接口时注意参数要求的类型-formData_第11张图片

关于formData对象的应用,还要多查查文档,记得以后再遇到接口参数类型需要表单数据时会用到此对象即可

总结

代码不会闹鬼,出一些莫名其妙的问题是技术不到位,精进!精进!

你可能感兴趣的:(前端)