[プロジェクト]client-serverはリクエスト/レスポンスタイプをどのように共有しますか?
2903 ワード
現在のタイトルを解決するには、次の手順に従います.
結局、私が完璧に体現したい形態を持つ報告書が見つからなかった.
知っているだけ
私が解決したいのはクライアントはサーバに要求を送信し、応答を受信する過程でtype情報を双方で共有するため 一方が送信するデータ形態が変化すると他方がエラーを吐く 形を表したい.
この中.
そこで、
何度もプロジェクトを覆す。 タイプスクリプトの正式なドキュメントを見ました。 typescript-express-starter構造解析も行った。 mono-repoにもgooglingをしたことがあります。
結局、私が完璧に体現したい形態を持つ報告書が見つからなかった.
知っているだけ
typescript-express-starter
最近私が解決したいのは
この形を思いついた。
wo
├─ package.json
├─ packages
│ ├─ client
│ │ ├─ next-env.d.ts
│ │ ├─ package.json
│ │ ├─ pages
│ │ │ └─ index.tsx
│ │ ├─ tsconfig.json
│ │ └─ yarn.lock
│ ├─ server
│ │ ├─ ormconfig.js
│ │ ├─ package.json
│ │ ├─ src
│ │ │ ├─ app.ts
│ │ │ ├─ controllers
│ │ │ ├─ entity
│ │ │ ├─ factories
│ │ │ ├─ interfaces
│ │ │ │ └─ index.ts
│ │ │ ├─ routes
│ │ │ ├─ seeds
│ │ │ ├─ server.ts
│ │ │ └─ utils
│ │ ├─ tsconfig.json
│ │ └─ yarn.lock
│ └─ shared <----
│ └─ types
│ ├─ exercise
│ │ └─ response.ts
│ ├─ post
│ │ ├─ request.ts
│ │ └─ response.ts
│ ├─ program
│ │ ├─ request.ts
│ │ └─ response.ts
│ ├─ record
│ │ ├─ request.ts
│ │ └─ response.ts
│ ├─ request.ts
│ └─ user
├─ tsconfig.json
└─ yarn.lock
共有には,各ブランチの応答,要求情報が格納されている.
この中.
// record/request.ts
export interface CreateRecord {
weight: number;
reps: number;
}
// record/response.ts
import Record from '@model/Record.entity';
export type CreateRecord = Record;
export type DeleteRecord = number;
このようにして、各リクエスト/レスポンスのタイプ情報が格納される.そこで、
server
・client
双方が通信する前のタイプ情報を使ってタイプ体Kingをしてみましょう!ちなみにtypescript-epress-starterはあるライブラリを使用します。 class-validator typeORMのentityの書き方と似ているように見えるので使いやすいように見えます。 import { IsEmail, IsString } from 'class-validator'; export class CreateUserDto { @IsEmail() public email: string; @IsString() public password: string; } このようにしてチェックするタイプを定義すればいいです。
Reference
この問題について([プロジェクト]client-serverはリクエスト/レスポンスタイプをどのように共有しますか?), 我々は、より多くの情報をここで見つけました https://velog.io/@vagabondms/프로젝트-client-server가-requestresponse-타입을-공유하는-방법テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol