Hono / SonikJavaScript

Honoでサブディレクトリごとにリソースを分割したAPIを作る

Honoを使用してAPIを作り込む際に、ファイルの分割をサブディレクトリ・パス単位で行うことが多いです。ルートのAPIを作成し、app.routeを使用してサブディレクトリ内の追加したいAPIを登録することで、パスの指定やリソースの分割がシンプルになります。例として、/supabase/contentというパスを指定したAPIを追加する方法が説明されています。

広告ここから
広告ここまで

HonoでいろいろとAPIを作り込んでいく時、ファイルの分割をサブディレクトリ・パス単位で分割することが多いので、やり方を簡単にまとめました。

ルートのAPIを作る

まずはルートのAPIを用意します。

const app = new Hono<{
    Bindings: {
        AI: Fetcher;
        VECTORIZE_INDEX: VectorizeIndex;
    }
}>()
app.get('/', c => c.text("hello"))

export default app

シンプルに追加する場合

ここにAPIを普通に足すと、こんな感じになります。

app.get('/sub/search', async c => {
    return c.text('search')
})
app.post('/sub/content', async c => {
    return c.text('search')
})

これでも充分なのですが、パスが増えてくると、サブディレクトリ部分のパスを毎回書くのが煩雑になったり、そのパスでしか使わないライブラリを外に出したりしたくなります。

app.routeでサブディレクトリを指定する

最近はapp.routeを使ってファイルを分割することが増えてきました。サブディレクトリの中に追加したいAPIは、新しくnew Hono()を実行して、そこにパスを生やします。

import { Hono } from "hono";

export const supabaseApp = new Hono()

supabaseApp.get('content', async c => {
    return c.text('content')
})

そしてサブディレクトリのパス名でapp.routeを使って登録すればOKです。



app.get('/', c => c.text("hello"))
app.route('/supabase', supabaseApp)

export default app

これでパスの指定やリソースの分割がシンプルになりました。

% curl http://127.0.0.1:8787/supabase/content
content%                                                     

ちなみに、c.req.path/supabase/contentが届きます。routeの値も入ってくる点に注意しましょう。

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts