1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Day1] TypeScript × Node.jsで簡単なRESTAPI作ってみる(HelloWorld編)

Last updated at Posted at 2018-09-12

何を作るの?

所属してるチームで使うAPI群を作ります。
Qiitaには作業の備忘録として投稿します。

なぜNode.js?

今回は簡単なAPIなので、
軽量ですぐに実装可能なNode.jsで書きます。

なぜTypeScript?

オブジェクト指向かつ静的型付けで記述が出来るので、
コードが汚くなりづらいのが特徴です。
※書き方によっては汚くなります()
今回は私一人で書きますが、
今後チームでの導入も考えて触れてみることにしました。

開発環境

docker

https://docs.docker.com/docker-for-mac/install/
node.jsのバージョンは推奨バージョンの8.12.0とします。
node:8.12.0-alpine

swagger

yamlで書けるAPIドキュメントです。
yamlからコードも自動生成出来ます。
swaggerで書いたドキュメントを仕様として、
node.jsの実装に落とし込んでいきます。

atom

atom-typescriptを導入しました。
TypeScriptのbuildが出来るようになります。

Hello World

パッケージ管理用のjsonを生成します。色々質問されますが、基本Enterでokです。
npm init

ルーティングを管理してくれるライブラリ
npm install --save express
セキュリティ対策
npm install --save helmet
TypeScript
npm install --save typescript

app.tsを作成します。

import * as express from 'express';  // tsの場合はimportらしい。なんかpythonぽい。
import * as helmet  from 'helmet';
var app = express();  // ここも型定義すべき? any型とかになるんだろうか。
app.use(helmet());    // helmetを使う(そのまま)
app.listen(50001, listen_callback); // http://localhost:50001
app.get("/", root_dir_callback);    // ルート直下でGETが呼ばれたら発火

function listen_callback() {
    console.log("start!");
}

function root_dir_callback(req, res, err) {
    res.end("Hello World!");
}

jsファイルに変換
tsc app.ts

実行
node app.js

http://localhost:50001
スクリーンショット 2018-09-12 20.42.21.png

感想

Any型(var)が使えるけど、これあんまり使わないほうが良さそう。
次は一旦実装から離れてDockerかSwaggerについて詳しくまとめてみます。

1
2
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
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?