SNS アプリをつくる
作りたい SNS アプリのために 技術と勉強をまとめていく.
フロントエンド: Next.js + TypeScript
バックエンド: Django-Ninja
認証: Firebase Authentication (Twitter)
バックエンドは FastAPI と悩んだが,ORM が FastAPI だと使いづらいので Django-Ninja に
デプロイは Vercel (Next.js) Cloud Run (Django-Ninja) を考えている
SQLは Cloud SQL にする予定
フロントも全部GCPにおいていいかもしれない
nest.js も少し触ってみる
Nest.js + Next.jsで両方TypeScriptにしたいお気持ちはある
以下の記事をやってみてから,本家のドキュメントチュートリアルよむ
ルーティング podt
task tasks
describe('createTask', () => { mockTest
のチュートリアル (OVERVIEW) をやっていく
コントローラは、受信したリクエストを「変換して」クライアントにレスポンスを返す。
基本はJSONにして返す。
d
NestJS は Providers に値するものが多い。 プロバイダは、機能を他のモジュールに提供することで再利用性を高める。
たとえば、Service, Repository など。
DIを使って動的にあたえる
各モジュールは自動的に shared module
となる。
一度作成したモジュールは、同じインスタンスとしてあらゆる場所から再利用できる(DIのおかえげ)
そのためには exports 配列に追加する必要がある。
import { Module } from '@nestjs/common';
import { UsersController } from './users.controller';
import { UsersService } from './users.service';
@Module({
imports: [],
controllers: [UsersController],
providers: [UsersService],
exports: [UsersService],
})
export class UsersModule {}
ただ、この UsersModule を import したモジュールが、usersServiceインスタンスを共有できるのがよくわからないな
コントローラのクラス定義とかで、 private さっきのサービス名
とかにすると自動的に注入されるのかな
@Controller('users')
export class UsersController {
constructor(private usersService: UsersService) {}
@Global で全体に設定できる。ただし、データベースなど、いろんなところで使うものに止めよう。
export したものは、利用側のmodule で import しないとおそらく inject されない
認証を行うミドルウェア。
CanActivateを実装する。
もし認証OKならば true を返す
とりあえず大まかにはわかったので
実際に調べながらやっていく
ここ参考に Users を TypeORM で作ってみる