Demo

RequestDto & ResponseDto

Backend API body နှင့် response တိုင်းတွင် RequestDto<T> / ResponseDto<T> ကို အသုံးပြုရပါမည်။ Raw payload ပြန်ခြင်း သို့မဟုတ် unwrapped @Body မလုပ်ရပါ။

ခြုံငုံသုံးသပ်ချက်

Envelope တစ်ခုတည်း — payload + status + message + referenceId။ Controller သည် body.payload ကို ဖတ်ပြီး ResponseDto.ok / okWithEmpty / error ပြန်ပေးရပါသည်။

  • Backend — @quan-erp/shared-backend-core
  • Frontend — @quan-erp/shared-frontend-core (simplified)
  • Raw entity / bare DTO မပြန်ရပါ

1. ResponseDto<T>

Success နှင့် error တို့သည် envelope တူညီပါသည်။

  • ResponseDto.ok — success + payload
  • ResponseDto.okWithEmpty — success + null payload
  • ResponseDto.error — error envelope
FieldTypeမှတ်ချက်
timestampstringISO အချိန်
status"success" | "error"ရလဒ်
messagestring?အသုံးပြုသူမြင်ရသော စာသား
codeHttpStatus?Error HTTP status (optional)
referenceIdstringLog / support tracing UUID
payloadTအမှန်တကယ်သော data
TSXcontroller responses
1import { 2 Delete, 3 Get, 4 HttpStatus, 5 Post, 6 ResponseDto, 7} from "@quan-erp/shared-backend-core"; 8 9@Get("/profile") 10async getProfile() { 11 const profile = await this.service.getProfile(); 12 return ResponseDto.ok(profile); 13} 14 15@Delete("/history/:id") 16async deleteHistory() { 17 await this.service.delete(/* … */); 18 return ResponseDto.okWithEmpty(); 19} 20 21@Post("/update") 22async update() { 23 try { 24 return ResponseDto.ok( 25 { success: true }, 26 { message: "Profile updated successfully" }, 27 ); 28 } catch { 29 return ResponseDto.error( 30 "Failed to update profile", 31 HttpStatus.INTERNAL_SERVER_ERROR, 32 ); 33 } 34}

2. RequestDto<T>

@Body() သည် RequestDto<T> မျှော်လင့်ပါသည် — data ကို body.payload မှ ယူရပါသည်။

TSXrequest body
1import { Body, Post, RequestDto } from "@quan-erp/shared-backend-core"; 2 3@Post("/calculate") 4async calculate(@Body() body: RequestDto<LoanCalculationDto>) { 5 const data = body.payload; 6 return ResponseDto.ok(await this.service.calculate(data)); 7}

3. Frontend pairing

Client တွင် new RequestDto(dto)၊ ResponseDto<T> cast၊ status စစ်ဆေးပြီး payload ပြန်ပေးရပါသည်။

  • POST/PUT — RequestDto ဖြင့် wrap လုပ်ရပါသည်
  • status === "error" ဆိုပါက throw လုပ်ရပါသည်
  • GET fetchFn — payload သာ
  • Frontend → Platform APIs → RequestDto & ResponseDto