在NEXTJS中将变量从客户端传递到服务器端



我已经这样做了,但我不知道为什么当我试图在另一个代码中再次应用它时,它不起作用。所以我有这个代码"客户端">

const response = await fetch("/api/ipfs", {method: "POST", DATA: "holaaaa"});
if (!response.ok) {
throw new Error(`Error: ${response.status}`);
}
const result = await response.json()
console.log(result.result)

这个是"服务器端">

function uploadIPFS(req, res) {
axios.get(req.body).then(r => {

let metadata = r.data
res.status(200).json({ metadata: metadata });
}).catch(err => console.error(err))
}
export default function handler(req, res) {
if (req.method==='POST') {
uploadIPFS(req, res);
}
}    

这是与我拥有的另一个api文件一起工作,所以我实现了另一个文件,即这个文件,并在客户端的另一个函数中调用新的api文件,问题是我想要从客户端传递到服务器的变量是主体之一,它说"holaaaa",它不工作并且抛出此错误。

API resolved without sending a response for /api/ipfs, this may result in stalled requests.
Error: Cannot read properties of null (reading 'replace')
at dispatchHttpRequest (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesaxioslibadaptershttp.js:161:23)
at new Promise (<anonymous>)
at httpAdapter (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesaxioslibadaptershttp.js:49:10) 
at dispatchRequest (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesaxioslibcoredispatchRequest.js:58:10)
at Axios.request (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesaxioslibcoreAxios.js:109:15) 
at Axios.<computed> [as get] (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesaxioslibcoreAxios.js:131:17)
at Function.wrap [as get] (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesaxioslibhelpersbind.js:9:15)
at uploadIPFS (webpack-internal:///(api)/./pages/api/ipfs.js:17:11)
at handler (webpack-internal:///(api)/./pages/api/ipfs.js:37:9)
at Object.apiResolver (C:UsersbernaDesktopProgrammingWeb developmentBlueTokenbluetokennode_modulesnextdistserverapi-utilsnode.js:184:15) {
config: {
transitional: {
silentJSONParsing: true,
forcedJSONParsing: true,
clarifyTimeoutError: false
},
adapter: [Function: httpAdapter],
transformRequest: [ [Function: transformRequest] ],
transformResponse: [ [Function: transformResponse] ],
timeout: 0,
xsrfCookieName: 'XSRF-TOKEN',
xsrfHeaderName: 'X-XSRF-TOKEN',
maxContentLength: -1,
maxBodyLength: -1,
env: { FormData: [Function] },
validateStatus: [Function: validateStatus],
headers: {
Accept: 'application/json, text/plain, */*',
'User-Agent': 'axios/0.27.2'
},
method: 'get',
url: '',
data: undefined
},
url: '',
exists: true
}

你知道这个吗?

向您的API发出请求,但您没有向请求体添加任何内容。我认为你需要改变你的DATA属性在你的取回调用body:

const response = await fetch("/api/ipfs", { method: "POST", body: "holaaaa" });

此外,因为你是传递身体参数到axios.get()方法在你的API处理程序,我认为它应该是一个URL?

最新更新