React app fetch() 响应为空,尽管从其他地方发送 GET 请求时 API 端点 returns 数据

React app fetch() response is empty although API endpoint returns data when sending a GET request from somewhere else

我的 API 电话是这样的:

export async function getTasks(): Promise<Task[]> {
  if (process.env.NODE_ENV === "test") {
    return new Promise<Task[]>((resolve) =>
      setTimeout(() => resolve(DefaultTasksArray), 1500)
    );
  } else {
    return (await fetch("/api/tasks").then(
      (response) => response.json
    )) as unknown as Task[];
  }
}

控制器中的 GET 动作 API

[HttpGet]
async public Task<IActionResult> Get()
{
    var tasks = await _service.GetAsync();

    return Ok(tasks);
}

服务在API

private readonly IMongoCollection<TaskObject> _tasksCollection;

public TaskService(IOptions<TaskManagerDbSettings> taskManagerDbSettings)
{
    var mongoClient = new MongoClient(taskManagerDbSettings.Value.ConnectionString);
    var mongoDatabase = mongoClient.GetDatabase(taskManagerDbSettings.Value.DatabaseName);
    _tasksCollection = mongoDatabase.GetCollection<TaskObject>(taskManagerDbSettings.Value.TasksCollectionName);
}

async public Task<List<TaskObject>> GetAsync() =>
    await _tasksCollection.Find(_ => true).ToListAsync();

当我在 Postman 或浏览器中发送 GET 请求时,我得到一个 JSON 对象,例如:

[
  {
    *data*
  },
  {
    *data*
  },
  ...
]

但是 fetch() returns 是一个空响应。可能是什么原因? 打开应用程序时,我在浏览器中没有看到任何错误。

更新: 我在浏览器的网络选项卡中看到响应,它有代码 200 和所有数据。但是在应用程序本身中,响应是空的。

获取 API 的响应中的 json 属性 是您要调用的函数。

(response) => response.json

应该是

(response) => response.json()

原来是API输出模型和UI响应模型的细微差别造成的。在我更改之后,它按预期工作。

另外我不应该使用“未知任务[]” 是的,response.json()