参考にしているyoutubeがRESTAPIを作っていたのでそちらを参考にMYSQLのRESTAPIを作りたいと思います。 RESTの処理の部分はかなり参考(ぱくり)にしている
続きを読むDeno.landでhttpサーバーを立てる
Hello Worldでサーバーは立てているのですが これはちょっと違う。ということで node.jsと言ったらexpressでしょ!!
expressやkoaに影響をうけたoakを使っていきます
import {Application,Router} from "https://deno.land/x/oak/mod.ts"; const port = 5000 const app = new Application() const router = new Router() app.use(router.routes()) app.use(router.allowedMethods()) router.get('/hello', ({response}: { response: any }) => { response.body = 'Hello World ' } ) console.log(`Server Running on port ${port}`) await app.listen({port })
実行には--allow-netが必要です
deno run --allow-net simpleServer.ts
router部分がexpressっぽい!!
ちなみに存在しないアクセスの場合は404になるみたい
apiっぽい使い方をしたいので今後は postmanというアプリケーションで確認します
postmanはapiサーバーを作る時に便利なのでオススメ
Deno.landでのファイルの読み書き
読み書きと書いてあるのですが書きからです
ファイルの書き込み
const encoder = new TextEncoder() const greetText = encoder.encode("Hello World\nMy Name is Masalib") await Deno.writeFile("greet.txt", greetText)
- ファイルに書き込むには、Deno.writeFileを使います。
- 第2引数には[Uint8Array]しか渡せないため、文字列は[TextEncoder]でエンコードする必要があります。
- 実行する時には「--allow-write」が必要です
deno run --allow-write createFile.ts
これは公式が書いてある
明示的に有効にしない限り、ファイル、ネットワーク、または環境へのアクセスはありません。
のためです。
ちょっとめんどくさいけどセキュリティー的にはいいかも
ファイルの読み込み
let file = await Deno.open("greet.txt") await Deno.copy(file,Deno.stdout) file.close
https://qiita.com/niwasawa/items/a4e695c4a5ecd8ce69f1 にはDeno.copyを使うみたいな事が書いてあるのですが現実的なのは変数にいれる事なので
const result = await Deno.readFile("greet.txt"); const dec = new TextDecoder("utf-8"); const text = dec.decode(result); console.log(text);
deno run --allow-read readFile.ts
書き込みと同様に「--allow-read」が必要です
読み書き時に[TextEncoder]でエンコードやデコードするのがめんどくさいな~
今流行りのDeno.landに入門してみた
フロントエンド側とバックエンド側でちょっと有名になった言語があるのですが言語と言うかシステムなのですがdenoというものがあります.
コンセプトとしてはnode.jsの弱点を補った形らしいのですが私はあまり触ったことがないので入門してみたいと思いました。
Denoは、V8を使用し、Rustに組み込まれた、JavaScriptとTypeScriptのシンプルでモダンで安全なランタイムです。
- デフォルトで保護します。明示的に有効にしない限り、ファイル、ネットワーク、または環境へのアクセスはありません。
- そのままの状態でTypeScriptをサポートします。
- 単一の実行可能ファイルのみを出荷します。
- 依存関係インスペクター(deno info)やコードフォーマッター(deno fmt)などの組み込みユーティリティがあります。
- Denoでの動作が保証されている一連のレビュー済み(監査済み)標準モジュールがあります:deno.land/std
上記は本家からの引用になります
実際に触ってみてなのですが
- node.jsと違って NPM というのでインストールすることはしないんでその都度サーバーからインストールするという方式をとっています。
- node.jsのコールバック地獄ないみたいなので本当にうれしい
- 今流行りのTyepscriptを標準として使えるのもいいところです。 型宣言できるというのはjava系のバックエンド側やってる人には非常にありがたい
環境的にはWindows10です。 何も問題なくインストールできました。 (念のために管理者権限で実行しています)
iwr https://deno.land/x/install/install.ps1 -useb | iex
いつもどおりHello Worldは超カンタン
deno run https://deno.land/std/examples/welcome.ts
さすがにこれだと・・・Hello Worldっぽくないので
import { serve } from "https://deno.land/std@0.54.0/http/server.ts"; const s = serve({ port: 8000 }); console.log("http://localhost:8000/"); for await (const req of s) { req.respond({ body: "Hello World\n" }); }
入門する前に必ず入れて欲しい vscode の拡張があります
こちらをインストールするとコードの補完してくれると言うのが便利です。 補完するにはモジュールのダウンロードする必要があります。
そのため、新しいモジュールをインポートする時は この状態で
import { serve } from "https://deno.land/std@0.54.0/http/server.ts";
で deno run xxxx.tsをする必要があります。 インストール(キャッシュ)しないと補完してくれないのはちょっとめんどくさいかな・・・
インストール前
インストール後