🛤️

OpenAPI から aspida 生成する際に URL に末尾のスラッシュが必要な時にやったこと

2021/07/05に公開
2

== 追記
コメントで教えていただいたのですが、 aspida 側で trailingSlash なるオプションがあるので、こちら対応できそうです。

https://github.com/aspida/aspida/tree/master/packages/aspida/docs/ja#aspidaconfigjs-のオプション

API が末尾にスラッシュつけないと動かない作りになっていたのですが、 openapi2aspida はどうも OpenAPI で末尾にスラッシュをつけていても自動的に無くしてしまうみたいです。

const api = <T>({ baseURL, fetch }: AspidaClient<T>) => {
  const prefix = (baseURL === undefined ? '' : baseURL).replace(/\/$/, '')
  // 末尾スラッシュが消えてしもうた
  const PATH0 = '/hogehoge/slash_kieteru'

openapi2aspida ではそのような設定はなさそうなので、 API client でリクエスト送る時にスラッシュがなかったらスラッシュ追加するようにしようと思います。

import axios from "axios";
import axiosClient from "@aspida/axios";

axios.interceptors.request.use((config) => {
  // 末尾にスラッシュなかったら追加
  if (config.url && config.url[config.url.length - 1] !== "/") {
    config.url += "/";
  }
  return config;
});

export const apiClient = axiosClient(axios, {
  baseURL: process.env.REACT_APP_API_URL,
});

Discussion