欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > (四)SvelteKit教程:调用外部 API 获取数据

(四)SvelteKit教程:调用外部 API 获取数据

2025/2/27 2:53:12 来源:https://blog.csdn.net/CoderPai/article/details/140068871  浏览:    关键词:(四)SvelteKit教程:调用外部 API 获取数据

(四)SvelteKit教程:调用 API

我们先按照如下的方式来构建api服务:

step 1:npm i json-serverstep 2:在根目录下新建 db.json 文件,内部写入如下内容:{"users": [{"id": 1,"name": "Alice","email": "alice@example.com"},{"id": 2,"name": "Bob","email": "bob@example.com"}]}step 3:在 package.json 中添加如下命令:"scripts": {"serve-json": "json-server --watch db.json --port 4000",...}step 4:
运行命令:npm run serve-json

至此,你可以通过 http://localhost:4000/users 来访问刚才创建的用户数据。

接下来,我们在 SvelteKit 项目中调用这个 API。

首先,我们在 /about 目录下面新建一个 +page.js 文件,内容如下:

export const load = async (loadEvent) => {const { fetch} = loadEvent;const title = "About Us Ming title";const response = await fetch("http://localhost:4000/users");const users = await response.json();return {title,users,};};

至此,我们就可以在 /about 页面中使用 users 数据了。我们在 /about/+page.svelte 文件中使用如下代码:

<script>export let data;const users = data.users;</script><div>about page ming - {data.title}<a href="/">Home page</a>{#each users as user}<p>{user.name}</p>{/each}</div>

这样,我们就完成了调用 API 的功能。

带参数的API

假设我们 /about 下面需要有带参数的 API,目录如下:

├── +layout.svelte
├── +page.svelte
├── about
│   └── [aboutID]
│       ├── +page.server.js
│       └── +page.svelte

比如我们需要访问 /about/1 那么如何将这个 1 传入到 API中,我们只需要修改 +page.server.js 就行,文件如下:

export const load = async (serverloadEvent) => {const { fetch, params, url, route} = serverloadEvent;console.log("About page load", params, url, route.id);const { aboutID } = params;const title = "New, from server";const response = await fetch(`http://localhost:4000/users/${aboutID}`);const users = await response.json();return { title,users,};};
对应

对应的 +page.svelte 如下:

<script>export let data;const user = data.users;
</script>user.name: {user.name}{user.email}

这样我们就可以获取 /about/1 的数据

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词