일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 체인의정석
- ethers type
- Vue
- SBT표준
- 스마트컨트렉트 함수이름 중복 호출
- multicall
- 프록시배포구조
- ethers websocket
- 컨트렉트 동일한 함수이름 호출
- 스마트 컨트렉트 함수이름 중복
- ethers v6
- 컨트렉트 배포 자동화
- 스마트컨트렉트 예약어 함수이름 중복
- vue기초
- 러스트 기초 학습
- git rebase
- 러스트기초
- 머신러닝기초
- nest.js설명
- 깃허브명령어
- 러스트 기초
- nestjs 튜토리얼
- ethers
- 스마트컨트렉트테스트
- ethers typescript
- 스마트컨트렉트프록시
- chainlink 설명
- Vue.js
- rust 기초
- ambiguous function description
Archives
- Today
- Total
체인의정석
class validator 사용하기, 다중 validation 처리하기 본문
728x90
반응형
calss validator가 여태까지 제대로 작동하고 있지 않음을 체크하였다.
그 이유는 @로 프로퍼티를 설정하고 나서 그 이후에 따로 객체를 만들어서 처리하는 부분을 안 써두었기 때문이다.
따라서 다음과 같은 로직을 추가하였다.
export class AddressesController {
constructor(private readonly addressesService: AddressesService) {}
@Get('contracts/:ethAddress')
async findOne(
@Param('ethAddress') ethAddress: string,
): Promise<GetContractResponse> {
const getContractRequest = new GetContractRequest(ethAddress);
const errors = await validate(getContractRequest);
if (errors.length > 0) {
throw new BadRequestException(errors);
}
const response = this.addressesService.getAddressType(getContractRequest);
return response;
}
}
위와 같이 validate를 해주어야 class validator가 작동한다.
가장 깔끔한 response를 주기 위해서는
import { IsEthereumAddress } from 'class-validator';
export class GetContractRequest {
@IsEthereumAddress({
message: 'Is invlaid eth address',
})
ethAddress: string;
@IsEthereumAddress({
message: 'Is invlaid eth address2',
})
ethAddress2: string;
constructor(ethAddress: string) {
this.ethAddress = ethAddress;
this.ethAddress2 = ethAddress;
}
}
위와 같이 여러개의 에러가 있다고 가정해보면
controller 부분에서 에러체크를 하고 결과값을 반환할 때
이런 식으로 에러가 발생하기 때문에 , 이 배열을 map 을 이용하여 에러를 리턴해주는 새로운 배열로 다시 만들어서 응답하면 더 체계적인 응답이 가능해 보인다.
검사하는 변수가 여러개인 경우 이렇게 한번에 검사하여 결과 값을 보여주게 되면 더 깔끔하고 친절한 응답이지 않을까 싶다.
아무튼 요점은 class validator를 사용할때는 class를 생성하고 에러를 배열형태로 리턴받아서 예외처리를 해주자 이다.
728x90
반응형
'개발 > backend' 카테고리의 다른 글
typescript 비동기/동기 처리 (0) | 2021.11.17 |
---|---|
typescript) typeORM, query Builder, 날짜 검색 구문 쓰기 (0) | 2021.11.15 |
TypeORM & NestJS) Query Selector 사용하여 다수의 데이터를 가져오고 Response 구조로 다수의 데이터 응답 보내기 (0) | 2021.11.03 |
SQL) Paging 처리하기, 페이징 API 만들기 (0) | 2021.11.02 |
리팩토링) nest.js 기본 구조 체계화 하기 (0) | 2021.10.26 |
Comments