我有一个单页应用程序,我想在其中显示来自Astro博客的最新帖子。astro是否提供API来方便地从另一个应用程序访问这些信息?
我使用Astro Endpoints为我的博客创建自定义API。
src/页面/recent-posts.json.ts
import { MarkdownInstance } from "astro";
import { Frontmatter, sortDateDescending } from "src/misc";
export async function get() {
const allPosts = import.meta.glob<MarkdownInstance<Frontmatter>>("./posts/article/*.md", { eager: true }); // Vite
const posts = sortDateDescending(Object.values(allPosts))
.filter((ele) => ele.frontmatter.draft != true)
.map((ele) => {
return {
title: ele.frontmatter.title,
url: ele.url,
thumbnailUrl: ele.frontmatter.image,
content: ele.rawContent(),
publishedDate: ele.frontmatter.date,
tags: ele.frontmatter.tags,
};
});
const LIMIT = 2;
return {
body: JSON.stringify(posts.slice(0, LIMIT)),
};
}
现在,我可以从端点/recent-posts.json
获取最近的帖子。