.NET Core API 与 Axios 请求问题

.NET Core API 与 Axios 请求问题

API 如下

[HttpGet("login"), AllowAnonymous]
        [ProducesResponseType(typeof(TokenInfo), StatusCodes.Status200OK)]
        public async Task LoginAsync(ThisPart dto)
        {
            #region 校验用户信息
            List obj;
            try
            {
                    // ...此处省略,没问题
            }
            catch (Exception ex)
            {
                //  ...此处省略,没问题
            }
            #endregion

            #region 认证通过,发送 JWT
                  // ...此处省略,没问题
            #endregion
        }

Axios 请求如下

async loginUser(state) {
            var data = JSON.stringify({
                "partName": "Kubur",
                "partPass": "Kubur148632"
            });


           /*  let data = {
                partName:"Kubur",
                partPass:"Kubur148632"
            } */
            var config = {
                method: 'get',
                baseURL:'http://localhost:5094',
                // url: '/login',
                headers: {
                    'Content-Type': 'application/json'
                    // 'Content-Type': 'application/x-www-form-urlencoded'

                },
                data: data
            };

            state.userInfo = await axios('/login',config)
        }

问题表示

400 : One or more validation errors occurred

img

补充

  • 尝试过 let_data+qs.stringify作为 data参数
  • 尝试过修改媒体类型为application/x-www-form-urlencoded
  • 尝试过修改后端API,使用注解[FromBody]

均无意义,求解,问题在哪?

PostMan测试没有问题

附 : ThiPart·

 public class ThisPart
    {
        public string? partName { get; set; }//角色用名

        public string? partPass { get; set; }//角色密码
    }
  • 现在咋爱考虑是不是数据格式问题,因为 PoatMan这边用的raw作为data

400 就是参数不对的意思,对比一下参数,参数类型,参数个数,已经是否是 get 或者 post 请求这些

是因为get请求不接收来自FromBody的值而不是接口参数为符合对象必须用Post。如果是get请求和复杂类型的参数,你应该以query的形式传对象:

var config = {
    method: 'get',
    baseURL:'https://localhost:5094/'               
};

axios('login?partName=Kubur&partPass=Kubur148632',config)