Closed5

Deno Deploy でAPIをデプロイしてみる

koukibuu3koukibuu3

Deno Deploy というDenoランタイムを実行できる環境を見つけたため、利用してみます。
当月の稼働予定時間もろもろを返す簡単なAPIを作ってみることにします。

https://deno.com/deploy

koukibuu3koukibuu3

Playground(ダッシュボードからコードが書ける)でHelloWorldを作成してみました。
ファイルは一つしか配置できないですが、気軽にコードをデプロイできたので驚き。
Playgroundで作成したプロジェクトをGithubにエクスポートすることも可能なようです。

Playground

koukibuu3koukibuu3

今回作るAPIは1ファイルに処理を収めるのはしんどいので、Githubでリポジトリを作成。

Deno Deployのプロジェクト作成時に以下を指定してAutoDeployの設定を完了。

  • Githubリポジトリを選択し
  • ブランチを選択(例. main)
  • ハンドラー関数を選択(例. src/main.ts)

Github Actionを利用するオプションもあったため、デプロイ処理をGithub側で管理することもできそう。

koukibuu3koukibuu3

npmのdayjsを利用したかったので以下のように記述していたが、
ローカルでは動くもののDenoDeployではデプロイが失敗。npmモジュールが見つけられない。

import dayjs from 'npm:dayjs@1.11.7'

調べてみるとDenoDeployではnpmモジュールはまだサポートされていないよう。
https://github.com/denoland/deno/issues/17030

コメントで指摘されていた通り、
以下のようにしたら解決した。esm.sh ってなに?どういうこと?というのは分からないので調べる。

import dayjs from 'https://esm.sh/dayjs@1.11.7'
koukibuu3koukibuu3

なんだかんだあったけれども、無事動くものは作れました。
https://github.com/koukibuu3/calc-workdays

(Deno関係ないけれど)モジュールの切り出し方はどういったのがいいのか分からず、
色々な方法を試してみました。

  • クラスをエクスポートする方法
  • 関数をそのままエクスポートする方法
  • 関数をプロパティとして持ったオブジェクトをエクスポートする方法

curlで呼び出して気軽でjsonに受け取れるようにできたので、ひとまず満足です。

% curl 'https://calc-workdays.deno.dev/?q=202305'
{"year":"2023","month":"05","days":31,"holidays":8,"specialHolidays":3,"workdays":20,"workHours":155}
このスクラップは2023/03/20にクローズされました