inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [초급] NestJS REST API 백엔드 완전 정복 마스터 클래스 - NestJS Core

Patch Post 엔드포인트 생성하기

put 요청은 언제

89

ㄹㄹㄹ

작성한 질문수 5

0

앞으로 나오는 put 요청은 모두 patch에 해당하고 수정하는 부분이 있다는데

언제쯤 나오나요?

지금 typeorm까지 들었는데도 계속 다른설명으로 나오고 수정되는 부분이 없는듯해요

쌩기초입문자라 너무 헷갈리는데..

 

  1. 그럼 put요청의 설명은 없었던건가요?

 

  1. typeorm의 updatePost의 save기능에서

1) 만약 데이터 존재하지않는다면 새로생성

2) 데이터 존재한다면 (같은 id)값을 변경

이라곤 하지만 NotFoundException() 처리를 하는걸로봐서 새로생성하지 않는 것 같은데요..

이것도 단순히 값만 변경하는 patch요청에 해당하는거 아닌가요?

javascript typescript rest-api nestjs backend

답변 3

0

코드팩토리

아래 답변 참고드립니다.

감사합니다!

0

daniel lee

115강에 patch로 수정하는 부분 나와요!

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. ㄹㄹㄹ님.

NestJS와 REST API에 대한 혼란이 있으신 것 같아 일부 개념을 정리해드리겠습니다.

PUT vs PATCH의 이해

  1. PUT 요청: 보통 리소스 전체를 업데이트하는 데 사용됩니다. 클라이언트가 리소스의 전체 상태를 서버에 보내며, 서버는 그 리소스를 생성(추가)하거나 전체를 변경하는 것을 기대합니다.

  2. PATCH 요청: 리소스의 일부만 변경하고자 할 때 사용합니다. 클라이언트는 리소스의 일부분만을 서버에 보내며, 서버는 지정된 부분만 업데이트합니다. 이는 부분적인 수정을 하는 데 더 적합한 방식입니다.

TypeORM의 save 기능과 NotFoundException

  • TypeORMsave 메소드는 해당 엔티티가 데이터베이스에 이미 존재하면 업데이트하고, 만약 존재하지 않는다면 새로 생성합니다. 그러나 코드에서 NotFoundException()을 이용해 특정 리소스를 찾지 못했을 경우 명시적인 에러를 던지도록 구현되어 있다면, 이는 서버의 응답 방식(여기서는 리소스를 새로 생성하지 않는 것)과 관련 있습니다.

즉, save 가 항상 새로운 엔트리를 생성하는 것이 아니라, 구현된 로직에 따라 다르게 동작할 수 있습니다. 예를 들어 다음과 같은 로직에서는 리소스를 생성하지 않습니다:

  async updateResource(id: number, data: UpdateDto) {
    const resource = await this.repository.findOne({ where: { id } });
    if (!resource) {
      throw new NotFoundException('Resource not found');
    }

    Object.assign(resource, data);
    return this.repository.save(resource);
  }

이 예에서는 리소스가 존재하지 않으면 예외를 발생시키고, 존재할 경우에만 업데이트가 진행됩니다. 따라서, 새로운 리소스를 생성하진 않습니다.

관련된 내용을 더 자세히 이해하기 위해 다음 질문들을 참고해보시면 도움이 될 것입니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

cascade 질문

0

38

1

@types/bcrypt 설치과정이 누락된것같습니다.

0

44

1

process.env port key 에러

0

44

1

추상화

0

46

1

[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상

0

93

2

where 키워드가 들어가는 메서드와 아닌 메서드

0

55

1

BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?

0

68

1

app.controller app.service 는 지워도되나요?

0

68

1

@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이

0

77

1

포트 3000에서 listen하는 곳까지 넘어가지 않습니다.

0

63

1

PickType 사용 시 `as const`를 꼭 사용해야 하나요?

0

101

2

socket connect 오류

0

96

2

강의를 들으면서 궁금한 점

0

96

2

DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?

0

56

2

커리큘럼 질문

0

97

2

typeorm VS prisma

0

340

2

142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.

0

75

2

User 데코레이터 버그 수정 전달드립니다.

0

66

1

git 주소 부탁드립니다.

0

111

2

nest g resource 명령어 에러

0

99

2

로그인 엔드포인트 관련 질문

0

83

2

yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우

0

145

3

"흔히 사용되는 메서드" 강의 관련 질문입니다~

0

94

2

@nestjs/serve-static

0

106

2