inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 기반 REST API 개발

REST API 부분 수정 및 삭제 문의 드립니다.

475

pyopyo

작성한 질문수 5

0

안녕하세요. 

REST API 개발 중 문의드릴게 있어서 글 올립니다. 

데이터 중 일부 수정, 일부 삭제를 원하는데요. 

백앤드에서 modelmapper를 사용해 null 값으로 넘어오는 속성에 대해서

PATCH일 경우는 아래와 같이 설정을 하여 null로 넘어오는 DTO 속성은 무시하여 entity의 값을 덮어쓰지 않게 하였고

modelMapper.getConfiguration().setSkipNullEnabled(true);

PUT일 경우는 아래와 같이 설정하여 null로 넘어오는 DTO 속성에 대해서 entity의 속성을 null로 덮어쓰게 하였습니다. 

modelMapper.getConfiguration().setSkipNullEnabled(false);

위와 같이 설정하면서 초기 데이터가 아래와 같을 때

GET /users/1

{

"name": "ajp", 

"age": 33

}

--------------

PUT /users/1

{

"name": "ajp2"

}

와 같이 REST API 요청 시 아래 결과가 되고 

GET /users/1

{

"name": "ajp2", 

"age": null

}

--------------

PATCH /users/1

{

"name": "ajp2"

}

와 같이 REST API 요청 시 아래 결과가 되도록 하였습니다. 

GET /users/1

{

"name": "ajp2", 

"age": 33

}

이게 제가 잘 설계한게 맞는건가요? 아니라면 혹시 데이터 중 일부는 수정하고 일부는 삭제하고 싶을 경우에 어떤식으로 설계하면 좋을까요? 현재 @RequestBody로 json 데이터를 DTO로 받고 있습니다. 

조언 부탁드립니다 감사합니다 :) 

rest-api java spring

답변 1

0

백기선

null을 막느냐 안막느냐 설정 때문에 부분 삭제랑 부분 수정하고 충돌하는 부분이 생기네요.

ModelMapper 설정은 그대로 두시고 일부 수정(PATCh) API 라면 본문에 들어온 모든 데이터로 수정을 하면 어떨까요.

그렇게 한다면 일부 삭제는 일부 수정으로 처리할 수도 있을것 같네요. 본문에 들어온 데이터에 null이나 기본값으로 설정하면 될테니까요.

Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter

0

73

1

junit5 사용하시는 분들

0

87

1

자바 빈 스펙을 준수하는지 체크하는 테스트

0

236

2

REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러

0

242

1

스프링 부트 3버전에서의 실습

0

190

1

java.lang.AssertionError: Status

0

530

2

spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.

0

286

1

섹션2 201응답받기 부분 테스트 404에러 질문입니다

0

741

1

강의 자료가 404입니다 확인 부탁 드려요!

0

477

1

연동 DB문의

0

358

1

이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문

0

505

1

(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우

0

380

0

maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문

0

621

1

테스트 오류 질문드립니다.

0

512

1

docs 요청값이 반영이 안되네요... (해결)

-1

394

1

psql 적용 후 에러

0

818

2

mvn package 시 다음과 같은 에러가 나시면

0

765

2

Event에 Account manager를 추가했으면 문서화 필요

0

274

1

2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~

1

473

1

asciidoc 추가 스니펫 에러 해결법

0

400

1

_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.

0

423

3

깃랩 처음 사용자를 위한 index.adoc raw 보는 법

0

332

1

eclipse 쓰시는 분을 위한 maven-resources-plugin 팁

0

333

1

부트 + jupiter 인 경우 설정법

0

342

1