Closed ssssota closed 2 years ago
@nori3636 これ結構コアな部分なのでクリティカルパスになると思います。早めに片付けてしまいたいです
GraphQL https://zenn.dev/knaka0209/articles/fd9d694b2ce41f
window.fetch https://remix.run/docs/en/v1/other-api/fetch
一旦Loaderに書いてそれを受け取る形になるみたい。
fetchライブラリ≠axios? Remixではaxiosは使わずそのまま通信できるみたいなことを公式Discordで言われてました
ここのissueのスコープはfetchライブラリの選定ではなくて、 REST API / GraphQL / gRPC Web のいずれを使ってバックエンドと通信するかという話です axiosを使うとかはこれの後の話です
REST APIなら
/api/inol/:id
のリクエスト形式、レスポンス形式を決めましょう
GraphQLなら
schema.graphql
を書きましょう
などという話になるはずです
REST APIだとそのあとライブラリとかを決めずにそのまま使えそう。 参考:
export let action: ActionFunction = async ({ request }) => {
const response = await fetch(
"https://buttondown.email/api/emails/embed-subscribe/moulton",
{
body: await formDataAsQueryString(request),
method: "POST",
headers: {
"Content-Type": "application/x-www-form-urlencoded",
},
}
);
if (response.status >= 400) {
// deal with error
console.log("response", response);
return { error: true };
}
const headers = await setFlash(request, "success");
return redirect("/", { headers });
};
GraphQLも先駆者が結構いるので、なんとななりそう?感ある。 gRPC Webは良く分かってなくて自分がとっかかりが一切分からないので避けたい
できるできないというより、多分できるので、 「どこがよくてどこがダメだから、こっちにする」 という話をしたい
gRPC Webはできないかも
今回のアプリに関しては余り複雑にならない気がしていて、記事に言われているような余計なものまで取得するとかリクエスト数が減るみたいなGraphQLのメリットをそこまで実感できないのでは?と思った。調べた限りGraphQLを使用しても特にデメリットはなさそうなので、バックエンド側が実装しやすい方でいいのではないかと思いました
じゃあOpenAPIかな
rest or graphql or grpcweb?