最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

API已解析,但未在Nextjs中发送响应

IT培训 admin 13浏览 0评论

API已解析,但未在Nextjs中发送响应

嗨,我必须在我的nextjs产品中进行相同的更改,因为我的委托API不支持许多调用,我希望每3分钟刷新一次原始数据。我从nextjs实现了API:我创建了一个pages/api/data,然后在内部调用端点,并在getInitialProps内部调用了对数据文件的索引。get工作正常,但是我有两个问题:

1:我收到一条警告消息,内容为:API解析后未发送对/ api / data的响应,这可能导致请求暂停。

2:它在3分钟后没有重新加载数据。我想这是因为Cache-Control值...

有帮助吗?谢谢

这是我的代码:

页面/ api /数据

import { getData } from "../../helper";

export default async function(req, res) {
  getData()
    .then(response => {
      res.statusCode = 200
      res.setHeader('Content-Type', 'application/json');
      res.setHeader('Cache-Control', 'max-age=180000');
      res.end(JSON.stringify(response))
    })
    .catch(error => {
      res.json(error);
      next();
    });
};

页面/索引

import React, { useState, useEffect } from "react";
import fetch from 'isomorphic-unfetch'

const Index = props => {

  return (
    <>Hello World</>
  );
};

 Index.getInitialProps = async ({ res }) => {
  const response = await fetch('http://localhost:3000/api/data')
  const users = await response.json()
  return { users }
};

export default Index;
回答如下:

You should return a Promise and resolve/reject it.

示例:

import { getData } from "../../helper";

export default async function(req, res) {
  return new Promise((resolve, reject) => {
    getData()
      .then(response => {
        res.statusCode = 200
        res.setHeader('Content-Type', 'application/json');
        res.setHeader('Cache-Control', 'max-age=180000');
        res.end(JSON.stringify(response))
        resolve();
      })
      .catch(error => {
        res.json(error);
        next();
        reject()
      });
  });
};

API已解析,但未在Nextjs中发送响应

嗨,我必须在我的nextjs产品中进行相同的更改,因为我的委托API不支持许多调用,我希望每3分钟刷新一次原始数据。我从nextjs实现了API:我创建了一个pages/api/data,然后在内部调用端点,并在getInitialProps内部调用了对数据文件的索引。get工作正常,但是我有两个问题:

1:我收到一条警告消息,内容为:API解析后未发送对/ api / data的响应,这可能导致请求暂停。

2:它在3分钟后没有重新加载数据。我想这是因为Cache-Control值...

有帮助吗?谢谢

这是我的代码:

页面/ api /数据

import { getData } from "../../helper";

export default async function(req, res) {
  getData()
    .then(response => {
      res.statusCode = 200
      res.setHeader('Content-Type', 'application/json');
      res.setHeader('Cache-Control', 'max-age=180000');
      res.end(JSON.stringify(response))
    })
    .catch(error => {
      res.json(error);
      next();
    });
};

页面/索引

import React, { useState, useEffect } from "react";
import fetch from 'isomorphic-unfetch'

const Index = props => {

  return (
    <>Hello World</>
  );
};

 Index.getInitialProps = async ({ res }) => {
  const response = await fetch('http://localhost:3000/api/data')
  const users = await response.json()
  return { users }
};

export default Index;
回答如下:

You should return a Promise and resolve/reject it.

示例:

import { getData } from "../../helper";

export default async function(req, res) {
  return new Promise((resolve, reject) => {
    getData()
      .then(response => {
        res.statusCode = 200
        res.setHeader('Content-Type', 'application/json');
        res.setHeader('Cache-Control', 'max-age=180000');
        res.end(JSON.stringify(response))
        resolve();
      })
      .catch(error => {
        res.json(error);
        next();
        reject()
      });
  });
};
发布评论

评论列表 (0)

  1. 暂无评论