如何在另一个端点中获取一个端点?

问题描述 投票:0回答:2

我在

/api/metadata
有一个端点,我想在另一个端点中获取它,如下所示:

export const get: RequestHandler = async (event) => {
    try {
        const res = await fetch(event.url + '/api/metadata')

        const body = await res.json()

        return {
            body
        };
    } catch (error) {
        console.error(error);
        return {
            status: 500
        };
    }
};

但是我收到以下错误:

FetchError: request to http://localhost:3000/sitemap.xml/api/metadata failed, reason: connect ECONNREFUSED ::1:3000

当我将获取位置更改为

http://0.0.0.0:3000/api/metadata
时,获取就会正常工作。我是否可以在不使用
process.env.NODE_ENV
dev
中的
$app/env
)条件的情况下正确处理此获取请求?

javascript sveltekit
2个回答
3
投票

我认为最好将

/api/metadata
端点的主要逻辑包装到自己的模块中,然后在两个端点中导入该模块。所以你的代码看起来像这样(在两个端点):

import { getMetadata } from '$lib/metadata.js'


export const get: RequestHandler = async (event) => {
    try {
        // const res = await fetch(event.url + '/api/metadata')

        // const body = await res.json()

        const body = getMetadata();


        return {
            body
        };
    } catch (error) {
        console.error(error);
        return {
            status: 500
        };
    }
};

1
投票

event.url
包含完整的URL(带有路径名、查询字符串等)。

尝试使用

event.url.origin

const res = await fetch(event.url.origin + '/api/metadata')
© www.soinside.com 2019 - 2024. All rights reserved.