Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9359

Node.js/Express/routing-controllers+TypeScriptでWeb API作成

$
0
0
はじめに Node.js/Express+TypeScriptでWeb API作成という記事で、シンプルな Web API を作成してみた。そこではリクエストに対して定型文を返すだけであったが、最終的には PostgreSQL との接続をしてリクエストに応じた適切なデータを返す Web API 作成を考えている。しかし、Express の理解が浅いまま領域を広げるとかえって時間がかかるため、まず Express 単体で見通しをよくしていく。 本記事では、Node.jsでも綺麗なコードでWebAPIを作る(routing-controllers)を参考に routing-controllers という Express 対応のパッケージを使用することで、コントローラをクラスで設計した。実行環境は以下。 Node.js: 14.17.6 npm: 6.14.15 Express: 4.17.1 TypeScript: 4.4.3 routing-controllers: 0.9.0 インストールおよび tsconfig.json の設定 routing-controllers を参考にインストールしていく。 $ npm install routing-controllers $ npm install reflect-metadata $ npm install express body-parser multer $ npm install -D @types/express @types/body-parser @types/multer $ npm install class-transformer class-validator さらに routing-controllers にしたがって、tsconfig.json を修正する。 tsconfig.json { ... "experimentalDecorators": true, "emitDecoratorMetadata": true, ... } Simple Example Node.js/Express+TypeScriptでWeb API作成と同様に Hello World! と返す API を routing-controllers を用いて作成すると以下のようになる。simpleController.ts では、コントローラをクラスで設計されており、メソッドをハンドラとして定義し、メソッドデコレータを用いてルートを指定している。 simpleControllers.ts import { Controller, Get } from 'routing-controllers'; @Controller() export class SimpleController { @Get('/') helloWorld() { return 'Hello World!'; } } app.ts では上記で作成した SimpleController をコントローラとして指定した express インスタンスを作成して実行している。 app.ts import { createExpressServer } from 'routing-controllers'; import { SimpleController } from './controllers/simpleController'; const app = createExpressServer({ controllers: [SimpleController] }); const port = 3000; app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); }); routing-controllers を用いることで、API を増やす場合もコントローラごとにクラスを作成しクラス内にメソッドを追加・express インスタンス作成時にコントローラを指定するだけでよくなる。非常に見通しよくわかりやすいものとできる。 また本記事では用いていないが、Json の扱いやバリデーション、パラメータの使用なども容易に行える。詳細は routing-controllers を参照。 おわりに routing-controllers を用いて Express の見通しよい設計を行うことができた。以降 DB 連携を試していく。TypeORMはNode.js開発のスタンダードになるか?という記事によると、DB を扱う ORM の中で TypeORM を勧めており、これを参考に TypeORM + PostgreSQL を使用して自分の作成したい Web API がうまく作成できるか試したい。

Viewing all articles
Browse latest Browse all 9359

Trending Articles