LoginSignup
0
0

More than 5 years have passed since last update.

もっと簡単にnode.jsを使いたい ~関数ホスト~

Posted at

有給消化中、漫然と起きたり寝たり。
このままでは腐りそうだと、リハビリがてらあまり触れていなかったnode.jsをがっつり触っています。

で。

もっと簡単にnode.jsを使いたい。

これ。

特に、ちょっとしたAPIサーバを立てるのに、expressが~、とかmongoが~と、いろいろ定型文を書いていくのも面倒だし、相乗りさせる時にポートが、とかnginxのリバースプロキシが、とかそういうのを考えるのが超面倒です。
マイクロサービスのフレームワークなんてのも考えると面倒だし。

PHPの頃は、phpファイルを書いて、適当に載せれば何とでもなったのに。
デプロイは乗っけるだけで終わり。

「じゃあPHPで書けばいいじゃん」みたいな発想で、前職では結構本当にPHPで解消していたのですが、これを機にそういう感じの関数 as JSON APIサーバを作ってみました。

使ったもの

  • node.js
  • express
  • json-web-token
  • nedb

出来上がったもの

適当な説明

 userland以下の、functionsと、staticの下に、配信したものを置くと、そのまま公開してくれる便利な子。
 関数を書き換えると、勝手にリロードしてくれる賢い子。

ちょっと細かい話

  • リクエストされたURLの、一つ目と同名のjsファイルがfunctionsの下にあれば、解釈して、二つ目の関数を実行します。
  • アンスコ一つで始まるfunctionは、トークンがないと実行できないです。
  • アンスコ二つで始まるfunctionは、外から実行できないです。
  • クエリ文字列、POSTされたbodyを、そのまま列挙したものが関数の引数になります。
  • 最終引数にはユーザ情報も入っています。
  • どのjsにも、authenticate関数があり、userid、パスワードを渡すと(それが有効ならば)JWTを返却します

 jsファイルがない場合、以下の順序で静的ファイルが返却されます。
- static/group_xxx/リクエストパス(トークンがある場合、かつグループのフォルダがある場合)
- static/authed/リクエストパス(トークンがある場合、かつグループのフォルダがない場合)
- static/public/リクエストパス(トークンがない場合)

 こんな感じで、おおざっぱに作ってみました。
 作りかけで、結局実装しないものも入ってはいますが、備忘録がてら、一旦書き終えようかと。
 次回はもう少しこまごま書いていこうと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0