Yusuke

短縮リンク

2024/09(旧版: 2022/11, 2023/04)

TypeScript
deno

概要

deno を用いた自分用の短縮リンクサービス

技術スタック

deno を用いています。

deno と hono をそれぞれ使ってみたかったために採用しました。

もともとは DB として MongoDB を使用していましたが、deno を使っていることもあり Deno KV に変更しました。

deno deploy を用いてスムーズなデプロイを実現しています。

ハマったポイント

@hono/zod-validator という zod を用いたバリデーションが hono ではできるのですが、これは jsr にはありません。

一方 hono は jsr で @hono/hono として提供されており、これをインストールすると、npm からインストールした @hono/zod-validator と型が一致せず使い物にならなくなってしまいました。

最終的に hono も npm からインストールすることで解決することができました。

API

もともと使用していた API は、諸事情でブラウザからすべての操作をできるようにしていたのですが、その必要がなくなったために削除しました。

API は作成と更新を同様に処理するために POST リクエストは受け付けず、 PUT リクエストのみ受け付けるようにしています。

以下は旧版です。


概要

自分用に作った短縮リンクサービス

きっかけ

y4e.net という3文字netドメインを持っているのですが、その短さを活用したなにかを作りたい!と思い短縮リンクを制作しました。

技術スタック

fastityというNode.jsフレームワークを採用しました。
聞いたことはあったものの触ったことのないフレームワークだったので、好奇心で採用した部分があります。

API

データの更新のためにAPIを用意しています。
/api 以下はRESTなAPIにしていますが、製作当初、ブラウザからも操作したかったために通常のパスからも更新を可能にしました。

ブラウザからの更新

このように変更できるようにしました。(この例はリダイレクトを無効にするリクエスト)
/gh?method=DELETE&token=アクセストークン

現在は専用のクライアントを作成したため、使うことはありません。

専用クライアント

短縮リンクのリダイレクト管理を手軽にするために、2023年夏にようやく専用のクライアントを製作しました。(リポジトリは非公開)
Next.jsを採用し、内部のAPIから短縮リンクのAPIを叩く形にしました。