@kyanny's blog

My thoughts, my life. Views/opinions are my own.

How to make a simple HTTP server in Deno

Deno implements a native HTTP server function.

https://deno.land/manual/examples/http_server shows a complete example.

However reading the request body at once in string wasn't clear, which I found a little tricky for the TypeScript/Deno newbie.

gist.github.com


Python3: http.server のみでデバッグ用の HTTP サーバを作る - @kyanny's blogを Deno で書き直した版。こういうのこそ外部モジュールの扱いをシームレスにできる Deno の出番、と思ったらビルトインの機能が豊富なので何もインポートせずに書けた。

リクエストボディを全部文字列として読みたいという単純なことのやり方がわからなくて TypeScript のエラーを見ても理解できず一時間くらい時間を費やした。Reader.read() がデータを直接返さず、さらに .value プロパティにアクセスする必要がある、ということになかなか気づけなかった。

Python では list.append なのに JavaScript では array.push なのも混乱した。慣れの問題に過ぎないのだが、慣れるまでが大変ストレスだ。Perl を書いていた頃に Ruby に何度も挑戦したがそういう細かい書き味(API)の違いがストレスで、結局仕事で Ruby を書くようになるまで Ruby を書けるようにならなかったことを思い出す。