15
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Go】省略リンクサイト自分で作ってみた話【省略リンク】

Last updated at Posted at 2025-12-18

この記事は デジタル創作サークル UniProject Advent Calendar 2025 18 日目の記事です。

前書き

私は変なドメイン収集癖があります。
そのせいで、ドメイン保持数が10~20ぐらいあります。
最近は減らそうとしています。
その時にayane.xyzとかいう取りにくそうなドメインを入手したので、それを私のホームページがあるayane0857.netへリダイレクトするように最初はしていたのですが、それでは面白くないので省略リンクで遊ぼうとおもって、Goで開発しました。

本編

https://github.com/ayane0857/shorclink
ここから入手できます
現在Pullとか大募集です。

使ったもの

  • Go
    • gin
    • godotenv
    • gorm
  • postgres
  • K8s
    K8sはサーバーです。
    ユニプロのサーバーを使わせていただきました。

仕組み

postgresにショートコード(https://ayane.xyx/xxxxのxxxxの部分)とリンクを保存させています。
そこからgormで割り当ててます。
/apiや/api/:idにgetとかpostとかすると閲覧できたり、追加できたりいろんなことができます。
handlers/middleware.goenvの設定ファイルによってAPIを割り当ててます。
私の推奨はrequiredです。
それ以外は無効化か、完全公開しかありません。
もし有効化した場合は、ヘッダーのX-API-TokenTokenをいれれば通過できます。
APIは型にそってリクエストすると普通に使えるとおもいます。気分が良ければサイトにドキュメント追加します
https://github.com/ayane0857/shorclink/blob/main/models/sholink_models.go
こちらを見たらわかると思います。

envの説明

# Environment variables
ORIGINAL_LINK = https://example.com/

# Cors setting
ALLOWORIGINS = https://example.com/

# API settings
API = required
API_TOKEN = your_api_token

# SHORT_CODE settings
SHORT_CODE = auto
SHORT_CODE_LENGTH = 6

# Database configuration
POSTGRES_USER=your_db_user
POSTGRES_PASSWORD=your_db_password
POSTGRES_DB=your_db_name
POSTGRES_HOST=localhost

ORIGINAL_LINKはルートにアクセスされたときのリダイレクト先です。
ALLOWORIGINSはAPIを送っても大丈夫な部分です。Next.jsなどでリクエストしたいときにそのサイトのURLを使ってください。
API settingsは見たらわかるような設定項目なのでスキップします。
SHORT_CODEはAPIリクエストされたときに自動生成する(generate)か、そちら側で指定してもらう(required)か、自動で判断する(auto)かで分けています。
SHORT_CODE_LENGTHは自動生成する場合のショートコードの文字数です
Database configurationはDBのユーザー名等を記入ください。

凝った部分

handlers/short_code.goでショートコードに自由度を持たせています。
省略リンク系のサービスを見ると自動生成が結構多いんですけど、公式Discordの省略リンクを作りたい場合は/discordみたいな感じでわかりやすいリンクを作りたい方もいると思うので指定できるように、指定してない場合はそこを自動生成したりとか、そこらへんを作りました。

おわりに

Goでなにか作ったのは二回目なので、ちょっと不手際があると思いますが、どうぞ使ってくれるとうれしいです。
あとDBがポスグレか対応していないのがちょっと痛いですかね?
この省略リンクGoで作ったのでリダイレクトとかは早いとは思います、きっと()

15
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?