wam
w__am 개발노트
wam
  • 분류 전체보기 (165)
    • CS 지식 (10)
      • 자료구조 (0)
      • 알고리즘 (0)
      • 컴퓨터 구조 (0)
      • 운영체제 (0)
      • 네트워크 (7)
      • 데이터베이스 (0)
      • 디자인 패턴 (3)
    • Frontend (131)
      • Three.js (64)
      • NPM (1)
      • Nest.js (19)
      • React (10)
      • Apollo (7)
      • TypeScript (2)
      • JavaScript (12)
      • HTML, CSS (1)
      • Jest (3)
      • E2E (5)
      • Cypress (7)
    • Database (12)
      • TypeORM (12)
    • IT 지식 (8)
      • 클라우드 서비스 (3)
      • 네트워크 (1)
      • 데이터 포맷 (2)
      • 기타 (2)
    • IT Book (2)
    • 유용한 사이트 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 🐱 Github

인기 글

태그

  • gridhelper
  • 원형적인 움직임
  • joi 에러
  • API
  • e.preventdefault()
  • 스코프
  • math.cos()
  • 오프-프레미스(off-premise) 방식
  • threejs 개발 할 때 도움을 줄 수 있는 유틸리티
  • three.js 구성 요소
  • react 성능 최적화
  • isabstract
  • reactive variables
  • 함수 선언문
  • 함수 표현식
  • Decorators
  • 렌더링 성능 최적화
  • math.sin()
  • axeshelper
  • getdelta()
  • 삼각함수
  • getelapsedtime()
  • 데이터 포맷
  • 초기 환경설정
  • Interface
  • type-graphql
  • 디자인 패턴
  • 함수의 범위
  • 함수 리터럴
  • mapped types

최근 글

관리자

글쓰기 / 스킨편집 / 관리자페이지
hELLO · Designed By 정상우.
wam
Frontend/Nest.js

REST와 GraphQL: Controller와 Resolver의 차이점 이해하기

REST와 GraphQL: Controller와 Resolver의 차이점 이해하기
Frontend/Nest.js

REST와 GraphQL: Controller와 Resolver의 차이점 이해하기

2024. 7. 30. 18:34

 

REST와 GraphQL은 서버와 클라이언트 간의 데이터 통신을 위한 두 가지 주요 방식이다.

각 방식은 NestJS에서 각각 Controller와 Resolver를 사용하여 구현된다.

Resolver와 Controller는 목적과 사용되는 환경에서 차이가 있다. 둘 다 요청을 처리하고 응답을 반환하는 역할을 하지만, 사용하는 프로토콜과 구체적인 사용 사례에서 차이를 보인다.

 

 

REST와 Controller

@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Get()
findAll(): Promise<User[]> {
return this.userService.findAll();
}
@Post()
create(@Body() createUserDto: CreateUserDto): Promise<User> {
return this.userService.create(createUserDto);
}
}
  • 사용되는 프로토콜 - 주로 REST API와 함께 사용

  • 역할 - HTTP 요청(GET, POST, PUT, DELETE 등)을 처리하고, 적절한 응답을 반환하는 역할

  • 사용 예 - URL 라우팅을 통해 특정 엔드포인트로 들어오는 요청을 처리

  • 이 예시에서 UserController는 /users 엔드포인트에서의 요청을 처리한다.

 

 

GraphQL과 Resolver

@Resolver(() => User)
export class UserResolver {
constructor(private userService: UserService) {}
@Query(() => [User])
async getUsers(): Promise<User[]> {
return this.userService.findAll();
}
@Mutation(() => User)
async createUser(@Args('name') name: string): Promise<User> {
return this.userService.create({ name });
}
}
  • 사용되는 프로토콜 - 주로 GraphQL API와 함께 사용

  • 역할 - GraphQL 쿼리 및 변이 요청을 처리하고, 필요한 데이터를 반환하거나 데이터베이스에 변경을 가하는 역할

  • 사용 예 - GraphQL 스키마에 정의된 쿼리 및 변이에 대한 요청을 처리

  • 이 예시에서 UserResolver는 GraphQL 쿼리 getUsers와 변이 createUser를 처리한다.

 

 

주요 차이점

 

  1. 프로토콜:
    • Controller - HTTP RESTful API 요청을 처리.

    • Resolver - GraphQL 요청을 처리.




  2. 데이터 처리 방식:
    • Controller - REST API의 각 HTTP 메서드(GET, POST 등)에 대한 핸들러를 작성.

    • Resolver - GraphQL 스키마에 정의된 타입과 필드에 대한 핸들러를 작성.




  3. 클라이언트와의 상호작용 방식:
    • REST API에서는 클라이언트가 특정 엔드포인트로 요청을 보내고 서버는 이를 처리하여 응답을 보낸다.

    • GraphQL에서는 클라이언트가 요청 시 필요한 데이터와 그 구조를 명시하고 서버는 이를 처리하여 지정된 형식으로 응답을 반환한다.




두 방식 모두 데이터를 관리하고 처리하는 역할을 하지만, 클라이언트와 서버 간의 통신 방식에 따라 적합한 기술을 선택하면 된다.

 

 

 

저작자표시 변경금지 (새창열림)

'Frontend > Nest.js' 카테고리의 다른 글

Task Scheduling  (0) 2024.08.26
relationship 옵션 ( eager relationships, Lazy relations)  (0) 2024.08.24
NestJS의 기본 모듈 구조  (0) 2024.07.30
GraphQL 스키마에서 enum 타입을 정의할 때 사용, registerEnumType  (0) 2024.07.29
GraphQL 스키마를 정의할 때 매우 유용한 도구 MapperType  (0) 2024.07.29
  • REST와 Controller
  • GraphQL과 Resolver
  • 주요 차이점
'Frontend/Nest.js' 카테고리의 다른 글
  • Task Scheduling
  • relationship 옵션 ( eager relationships, Lazy relations)
  • NestJS의 기본 모듈 구조
  • GraphQL 스키마에서 enum 타입을 정의할 때 사용, registerEnumType
wam
wam

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.