👌

headersに認証情報を入れつつ、useSWRを使ってデータfetchをするメモ(axiosを使う)

2022/08/18に公開

背景

headersにRailsのdevise token auth のtoken情報を入れて認証させつつ、useSWRでデータをfetchするやり方が分からなかったのでメモした

環境

Next.js、Rails APIモード、devise token auth、を使用。

コード

結論としては、axiosを併用し、その.get()の引数にheaders:{入れたい認証情報}とする。

import useSWR from "swr";
import axios from "axios";


const fetcher = (url) =>
    axios
      .get(url, {
        headers: {
          "access-token": "トークン情報",
          client: "client情報",
          uid: "uid情報",
        },
      })
      .then((res) => res.data);

  const BaseURL = "環境変数で切り替えるAPIのURL"
  const url = `${BaseURL}${currentUser.u_id}/projects`;
  const { data, error } = useSWR(
    currentUser.u_id ? url : null,
    currentUser.u_id ? fetcher : null
  );

  const projects = data ? data.projects : [{}];
  
  return(
    {!data 
    ? <>読み込み中</>
    : <>projects."取得したデータを色々展開していく"</>
    }
  )

本来であればコンポーネントに切り出して、URLを引数に入れてreturnでデータを返す関数などを作るべきだが、今回の目的はuseSWRと認証情報の共存なのでこれで終了にする。

Discussion

ログインするとコメントできます