Closed5
Deno Deploy でAPIをデプロイしてみる
Deno Deploy というDenoランタイムを実行できる環境を見つけたため、利用してみます。
当月の稼働予定時間もろもろを返す簡単なAPIを作ってみることにします。
Playground(ダッシュボードからコードが書ける)でHelloWorldを作成してみました。
ファイルは一つしか配置できないですが、気軽にコードをデプロイできたので驚き。
Playgroundで作成したプロジェクトをGithubにエクスポートすることも可能なようです。
今回作るAPIは1ファイルに処理を収めるのはしんどいので、Githubでリポジトリを作成。
Deno Deployのプロジェクト作成時に以下を指定してAutoDeployの設定を完了。
- Githubリポジトリを選択し
- ブランチを選択(例. main)
- ハンドラー関数を選択(例. src/main.ts)
Github Actionを利用するオプションもあったため、デプロイ処理をGithub側で管理することもできそう。
npmのdayjsを利用したかったので以下のように記述していたが、
ローカルでは動くもののDenoDeployではデプロイが失敗。npmモジュールが見つけられない。
import dayjs from 'npm:dayjs@1.11.7'
調べてみるとDenoDeployではnpmモジュールはまだサポートされていないよう。
コメントで指摘されていた通り、
以下のようにしたら解決した。esm.sh ってなに?どういうこと?というのは分からないので調べる。
import dayjs from 'https://esm.sh/dayjs@1.11.7'
なんだかんだあったけれども、無事動くものは作れました。
(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にクローズされました