728x90
Validation의 필요성
- 사용자 등록과 같은 API를 작성할 때 필수 값이 없으면 DB오류나 의미 없는 데이터가 생성 될수 있음
사용자 등록 API
- 사용자 이름은 공백이면 의미 없는 데이터가 생성
data class User(
val id: Long?,
val name: String?
)
@GraphQLMutation(name = "createUser", description = "사용자 등록")
fun createUser(user: User): User {
return user
}
- 의미 없는 사용자 추가
mutation {
createUser(user: {
id: 1
name: ""
}) {
id
name
}
}
- 응답
{
"data": {
"createUser": {
"id": 1,
"name": ""
}
}
}
사용자 등록시 이름을 입력하도록 Validation 추가
- 공백 체크 코드
data class User(
val id: Long?,
@get:NotBlank(message = "이름은 공백일 수 없습니다.")
val name: String?
)
- GraphQL Service에 @Validated 추가
- API @Valid 추가
@Service
@GraphQLApi
@Validated
class DemoService {
@GraphQLQuery(name = "getUser", description = "사용자 조회")
fun getUser(): User {
return User(id = 1, name = "최치환")
}
@GraphQLQuery(name = "getErrorUser", description = "사용자 조회 실패")
fun getErrorUser(id: Long): User {
throw Exception("사용자 조회 실패")
}
@GraphQLMutation(name = "createUser", description = "사용자 등록")
fun createUser(@Valid user: User): User {
return user
}
}
- 응답 결과
- 응답 결과가 다를 경우 에러 메세지 처리 부분 확인(GraphQL 오류 처리)
{ "errors": [ { "message": "이름은 공백일 수 없습니다.", "locations": [], "extensions": { "code": "createUser.user.name", "detailMessage": "" } } ], "data": { "createUser": null } }
코드 참고
728x90
'GraphQL 스터디 > SPQR 라이브러리' 카테고리의 다른 글
GraphQL Custom Validation 추가 (0) | 2023.11.10 |
---|---|
GraphQL 오류 처리 (0) | 2023.11.10 |