Reactなどでフロントエンド開発をしているときに、試しにAPIを含む処理を実装したいと思うことは多々あります。しかし都合よくAPIが用意できるとは限りません。そんな時に活躍するフリーのAPIが「JSONPlaceholder」です。
今回はそのAPIを使って、受け取った情報を表示するコンポーネントを試作しました。
JSONPlaceholderとは
公式に書かれている紹介を要約すると、模擬データが欲しい場合に使用できる無料のREST APIです。
つまりインターネットに接続されていれば誰でも使えるAPIです。ありがたい!
JSONPlaceholder - Free Fake REST API
APIにはいくつか種類(投稿、ユーザ、アルバム、写真)があり、それぞれで返ってくるデータの構造が異なります。
React(Next.js)でAPIの応答を受け取るコンポーネントを作成
いくつかあるデータの中から今回は、「/photos」を使用しました。
データ構造の確認
/photosのから返ってくるデータ(全5000件)の構造は以下の通り。
[
{
"albumId": 1,
"id": 1,
"title": "accusamus beatae ad facilis cum similique qui sunt",
"url": "https://via.placeholder.com/600/92c952",
"thumbnailUrl": "https://via.placeholder.com/150/92c952"
},
{
"albumId": 1,
"id": 2,
"title": "reprehenderit est deserunt velit ipsam",
"url": "https://via.placeholder.com/600/771796",
"thumbnailUrl": "https://via.placeholder.com/150/771796"
},
/**** 続く ****/
今回はタイトル(title)とサムネイル(thumbnailUrl)を使用しました。
APIからのデータを受け取るコンポーネントのサンプル
以下画像のようなコンポーネントを作成しました。
ボタンを押すとAPIからデータを取得します。

APIからはJSON形式でたくさんの要素が返ってくるので、map関数で回して要素毎にUIを生成してます。
import React, { useCallback, useEffect, useReducer, useRef, useState } from 'react'
import classes from "./UsePlaceholderAPI.module.css"
const url_photos= 'https://jsonplaceholder.typicode.com/photos/'
export function UsePlaceholderAPI() {
const [photos,setPhotos] = useState([]);
// フォトの取得
const fetchPhotos = useCallback( (e) => {
fetch(url_photos)
.then(response => response.json())
.then(json => setPhotos(json))
}, []);
return (
<>
{/* フォトの取得 */}
<button className={classes.button} onClick={fetchPhotos}>APIからフォト取得</button>
{/* フォトの表示 */}
{photos.map(photo => (
<div key = {photo.id}>
<h3 className={classes.h3} >Title:{photo.title}</h3>
<p>thumbnailUrl:{photo.thumbnailUrl}</p>
<img src={photo.thumbnailUrl} />
<hr/>
</div>
))}
</>
);
}
cssは省略。適当にmargin入れてるだけなので。
さいごに
フロントエンドは画面があるので開発が楽しいですが、表面上だけだと少し物足りなくなります。
JSONPlaceholderのようなものが提供されるおかげで一段深い開発ができるので、ありがたいですね。
今後も活用していきたいです。
以下関連記事。





コメント