🐕

Next.jsでZennの記事をAPIで取得する

2023/09/07に公開
3

概要

個人ポートフォリオに Zenn の記事を掲載したときのメモ

Zenn の記事を取得する API

Zenn の記事は以下の API から取得できる。

https://zenn.dev/api/articles?username=(ユーザーID)&order=latest

ソースコード

コードは以下のとおり。

BlogList.tsx
interface Post {
  id: number;
  path: string;
  emoji: string;
  title: string;
  published_at: string;
}

export default async function BlogList() {
  const res = await fetch(
    'https://zenn.dev/api/articles?username=(ユーザーID)&order=latest',
  );
  const data = await res.json();
  const posts: Post[] = data.articles.slice(0, 10);

  return (
    <>
      <ul>
        {posts.map((post) => (
          <li key={post.id}>
            <Link
              href={`https://zenn.dev/${post.path}`}
              target="blank"
            >
              <span>{post.emoji}</span>
              <p>
                {post.title}
              </p>
              <p>
                <ConvertDate convertDate={post.published_at} />
              </p>
            </Link>
          </li>
        ))}
      </ul>
    </>
  );
}
ConvertDate.tsx
import dayjs from 'dayjs';

type Props = {
  convertDate: string | number | Date;
};

export default function ConvertDate({ convertDate }: Props) {
  const publishedAt = dayjs(convertDate).format('YYYY/MM/DD/');

  return <time dateTime={convertDate.toString()}>{publishedAt}</time>;
}

実際のサイト

https://h-ymt.com/blog

GitHubで編集を提案

Discussion

あだちあだち

はじめまして。
有用な記事ありがとうございます。

質問があるんですが、記事中の
https://zenn.dev/api/articles?username=(ユーザーID)&order=latest”
のような、Zennのapiに関する情報はどこかに公開されているのでしょうか?

特にorder=latestのようなクエリが使えるというのはどうしてわかったのか、よければ教えて下さい。

Y.Y.

コメントありがとうございます。

公開されている場所をざっと探しましたが、見つけられませんでした。(すみません)
本記事のapiは、以下のZennの開発者の方がコメントしていたものから見つけました。
知りたかった回答とは違うかもしれませんが、お役に立てれば幸いです 🙇
https://zenn.dev/link/comments/de8c8e9f253aa4