我有一个问题-当try 将数据从前端发送到后端时,它确实访问了后端代码中的相关控制器/函数,但当我try 调试它时,所有的值都变成了空.

我正在工作的项目是由第三方自由职业者发起的,当我创建新的控制器/功能时,我使用的方法与他们相同. 然而,有一个 case 有一个问题,我找不出这里到底有什么不同,这个特定的函数不起作用.

为简单起见,我只是用一些随机数据来测试它,看看控制器是否可以从Reaction中获取值.

Frontend code:

export const fetchToken = createAsyncThunk(
"tokens/fetchToken",
async (terminals: any, thunkAPI) =>
  {
  try 
  {
  const env: any = localStorage.getItem('environment');
  const token: any = "abcd";

  const model: any = {
    Token: "abcd",
    Environment: env,
  };

  alert(JSON.stringify(model));

  const response =   await axios({
      url: apiUrl,
      method: "get",
      data: model,
      headers:
      {
        'accept': 'text/plain',
        'Authorization': 'Bearer '+ JSON.parse(localStorage.getItem('token')  || '{}')
      }
    })
    .then(response => 
    {            
        alert(JSON.stringify(response.data.resultData));
        return response.data.resultData;
    })
    .catch(error => 
      {
        alert(error.response.data);
      }); 

  return response;
} catch (e) 
{
  return thunkAPI.rejectWithValue("");
} 

Backend code:

除了函数声明之外,不需要其他东西,因为我不会在没有所需值的情况下进入代码:

    [HttpGet, Authorize]
    public async Task<ActionResult<APIResponseBase<TokenDTO>>> GetTokenItems([FromQuery] TokenRequest filter)  

TokenRequest model:

using System.ComponentModel.DataAnnotations;

namespace CompanyName.Models.API
{
public class TokenRequest
{
    public string? Token { get; set; } = string.Empty;

    public string? Environment { get; set; }
}
}

同样,代码确实访问了所需的函数.但"Filter"中的所有值都是空值、空字符串、零等.

enter image description here

我确实记得以前有过类似的问题,但我不知道是什么原因导致了这一点.

What I checked:

  1. 第一个"alert "显示"模型"变量已正确生成.
  2. 当然,我验证了过滤器模型中的变量和前端中的变量是相同的.
  3. 我试着用"POST"替换"GET",反之亦然.
  4. 我甚至试着把"模型"改名为"过滤器".
  5. 从函数声明中删除"FromQuery"也无济于事.
  6. 在判断模式-&>网络中,我得到以下信息:

enter image description here enter image description here

请帮帮我我想找出是什么原因造成的,这样下次我遇到类似的事情时就不必猜测了.

谢谢,

叶夫根尼.

推荐答案

GET请求中,数据通常作为查询参数在URL中发送,而不是在请求主体中发送.在您的Axios请求中,您将method指定为"get",但您还提供了一个data属性,该属性通常用于POST请求中的请求体.

要解决这个问题,您应该修改您的前端代码以将数据作为查询参数发送.

const response = await axios({
  url: apiUrl,
  method: "get",
  params: model, // Send data as query parameters
  headers: {
    'accept': 'text/plain',
    'Authorization': 'Bearer ' + JSON.parse(localStorage.getItem('token') || '{}')
  }
})
.then(response => {
  alert(JSON.stringify(response.data.resultData));
  return response.data.resultData;
})
.catch(error => {
  alert(error.response.data);
});

Javascript相关问答推荐

Regex可以 Select 以任何顺序匹配组

将下拉分区与工具提示结合起来

为什么这个自定义组件会被放置在TR之外?

Toast函数找不到其dis

使用CDO时如何将Vue组件存储在html之外?

用户单击仅在JavaScript中传递一次以及其他行为

如何从对象嵌套数组的第二级对象中过滤出键

如何获取转换字节的所有8位?

jQuery提交按钮重新加载页面,即使在WordPress中使用preventDefault()

使用javascript将Plotly Expandable Sparkline转换为HighCharter Plot在bslib卡中

显示图—如何在图例项上添加删除线效果?

Websocket错误—有一个或多个保留位开启:reserved1 = 1,reserved2 = 0,reserved3 = 0

如何强制Sphinx中的自定义js/css文件始终加载更改而不缓存?

当id匹配时对属性值求和并使用JavaScript返回结果

检索相加到点的子项

Reaction组件在本应被设置隐藏时仍显示

钛中的onClick事件需要在两次点击之间等待几秒钟

是否可以将Select()和Sample()与Mongoose结合使用?

无法检索与Puppeteer的蒸汽游戏的Bundle 包价格

如何使用抽屉屏幕及其子屏幕/组件的上下文?