woowacourse / tecoble-comments

0 stars 0 forks source link

tecoble/post/2021-05-10-response-entity/ #27

Open utterances-bot opened 3 years ago

utterances-bot commented 3 years ago

ResponseEntity - Spring Boot에서 Response를 만들자

웹 서비스에서는 많은 정보를 송수신하게 됩니다. 각각의 다른 웹 서비스들이 대화하려면, 서로 정해진 약속에 맞게 데이터를 가공해서 보내야합니다. 보내는 요청 및 데이터의 형식을 우리는 HTTP(HyperText Transport Protocol…

https://woowacourse.github.io/tecoble/post/2021-05-10-response-entity/

YeonCheolGit commented 3 years ago

블로그 보면서 공부하는 학생입니다! 궁금한점이 있습니다.

BodyBuilder 타입으로 created() 메소드를 사용하면, 파라미터로 생성 후 이동할 URI를 반드시 넣어줘야 하는 것 같습니다. 만약 응답만 프론트로 넘겨주고 이동할 URI는 프론트에서 지정한다고 했을 때는 그냥 ok()로 통일하던가, 생성자를 활용한 HttpStatus를 이용하는게 좋을까요?

hybeom0720 commented 3 years ago

안녕하세요! 글 읽어주셔서 감사합니다.

예시로 든 우아한테크코스 미션의 해당 기능에서는 새로 자원을 만들지 않고, 이동 후 단순히 데이터를 반환하는 것이 요구사항이었습니다. 때문에 Created(201) 상태코드와 created() 메서드를 사용하지 않았습니다.

문서에 따르면, Created 상태 코드는 새로 생성된 자원의 주소를 함께 반환을 해야합니다.

MDN Web Docs

이 때문에, ResponseEntity에서 created()를 사용하게 되면 주소 지정이 필수가 된 것 같습니다.

백엔드단에서 GET Method를 통하여 생성된 자원에 접근할 수 있는 URI를 created()에 넣어서 같이 반환하는 것이 가장 좋다고 생각합니다.

하지만 말씀해주신데로, 생성된 자원에 접근할 수 있는 URI가 없거나 프론트에서 지정을 해서 움직여야한다면, 생성 실패시의 케이스와 다르게 응답을 하여 프런트에서 구분할 수 있게 응답을 해주면 된다고 생각합니다.

YeonCheolGit commented 3 years ago

말씀처럼 created 메소드는 새로 생성된 자원의 URI를 같이 넘겨야 하는게 애초에 규칙인데, 굳이 URI 없이 넘긴다면 오히려 규칙을 따르지 않는게 되겠네요ㅎㅎ

감사합니다! 덕분에 공부 많이 되었습니다.

dev-splin commented 3 years ago

좋은 글 감사합니다..!! 출처 밝히고 내용 인용해도 될까요??

hybeom0720 commented 3 years ago

넵 출처만 밝혀주시면 괜찮을 것 같습니다.

감사합니다.

choikangjae commented 2 years ago

이것보다 더 깔끔하고 상세하게 군더더기없이 설명할 수 있는게 가능한지 궁금할 정도로 대단히 잘 짜여진 글이네요 정말 잘 읽었습니다 많이 배워갑니다!!!

valorjj commented 1 year ago

작성하신 글에 흡입력이 있어서 머리에 쏙쏙 들어옵니다 ! 감사합니다.