inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

요청 매핑

api를 어느 컨트롤러에 작성해야하는지는 어떤 기준으로 해야하나요?

62

yoon6669

작성한 질문수 90

0

api 매핑 메소드를 어느 기준으로 어떤 컨트롤러에 작성해야하는지 궁금하여 질문좀 드립니다.

먼저 글을 작성할 수 있는 웹사이트(게시판)가 있고, 홈화면에서 글쓰기 버튼을 눌러 글쓰기 페이지)로 이동 후 글을 쓰고 등록하면 글 데이터가 DB에 저장할 수 있는 사이트가 있다고 가정하겠습니다.

그리고 프론트는 리액트이고 글쓰기 페이지로 이동시 프론트에서 요청 없이 페이지 이동을 하고 글 등록 버튼을 눌렀을 때에 /write 경로로 서버에 요청이 간다고 가정하겠습니다.

 

질문입니다.

등록 버튼을 눌러 /write라는 url이 서버로 오면 이 url은 다음 중 어느 컨트롤러에서 매핑되어야할까요?

  1. 홈 컨트롤러 - 홈화면에서 글쓰기 페이지(/write)로 이동한 것이니 홈 컨트롤러에서 매핑한다.

  2. 유저 컨트롤러 - 글은 유저가 쓴 것이고 유저와 관련있으므로 유저 컨트롤러에서 매핑한다.

  3. 글 컨트롤러 - 글 또한 별도로 DB에 관리되어야하므로 글 컨트롤러에서 매핑한다.

이러한 비슷한 상황이 온다면 url은 어느 기준으로 컨트롤러에 매핑 시켜야하나요?

감사합니다.

spring mvc

답변 1

0

인프런 AI 인턴

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

API 매핑 메소드를 어느 컨트롤러에 작성해야 하는지 결정하는 것은 매우 중요한 설계 문제입니다. 이는 시스템의 구조와 유지보수 편의성에 큰 영향을 미치기 때문입니다. 다음은 API를 컨트롤러에 매핑할 때 고려할 수 있는 기준들입니다:

컨트롤러 설계 기준

  1. 기능에 따른 분리:

    • 각 컨트롤러는 특정한 기능을 담당하는 것이 좋습니다. 예를 들어, ‘글’ 관련된 모든 처리를 담당하는 PostController, ‘유저’ 관련된 것을 처리하는 UserController처럼 역할을 구분합니다.
  2. 도메인 모델 중심:

    • 컨트롤러는 일반적으로 도메인 모델과 짝을 이루는 방식으로 설계됩니다. 따라서 글 쓰기, 수정, 삭제와 같은 기능들은 PostController에서 처리하는 것이 적절합니다. 이는 해당 기능들이 글 도메인과 관련이 깊기 때문입니다.
  3. URL 패턴과 명료성:

    • URL은 해당 기능을 가장 잘 설명해야 합니다. 글 등록 요청에 대한 URL이 /posts/write라면, 이 요청은 PostController에서 처리하는 것이 자연스럽습니다.

제안

  • 주어진 시나리오에서는 글을 생성하고 저장하는 로직이므로 글 컨트롤러 또는 PostController에 매핑하는 것이 좋습니다. 이는 글 데이터의 관리와 관련된 모든 기능을 한 곳에서 관리할 수 있다는 장점이 있습니다.

  • 홈 컨트롤러는 주로 메인 페이지나 홈페이지에 관련된 로직을 처리하는 것이 좋고, 유저 컨트롤러는 회원 정보, 로그인/로그아웃 등 유저에 직접적으로 관련된 기능을 처리하는 것이 좋습니다.

추가 참고 자료

유사한 주제로 다른 질문들도 참고해 보시면 도움이 될 것 같습니다:
- 컨트롤러와 서비스의 역할 분리
- API 설계와 RESTful한 URLs에 대한 이해

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

servlet과 container에 대한 질문입니다

0

22

1

jsp 의존성 수정 요청

0

77

2

요즘 웹 서버가 주로 사용되는 이유는 SPA 구조 때문일까요 ?

0

142

1

save() 메서드 문의

0

65

1

절대 경로로 templates/basic 하위 파일 열면 css 적용 안되는 현상

0

99

1

request-body-json

0

83

2

MVC 패턴의 적용 단위

0

94

1

RequestMapping을 이용한 핸들러, 어댑터

0

118

2

save 후 결과화면

0

86

2

jsp를 이용한 view

0

97

1

application.properties에 debug 추가해도 결과가 똑같습니다.

0

177

1

수업 코드 제공 관련 문의

0

97

2

RequestMappingHandlerAdapter의 Controller 호출 과정

0

99

3

파일 오픈 시

0

68

1

스프링 배치 관련

0

77

1

@RequestParam의 defaultValue가 blank 값도 처리하는 지 여부

0

112

1

postman으로 /request-body-json-v1 호출시 500 error

0

94

1

프론트엔드와 백엔드의 mvc, rest api에 대한 질문

0

78

1

모델의 역할과 계층 분리에 대한 이해 차이 + 추가질문

0

111

1

console log 출력 관련 질문입니다.

0

74

1

애플리케이션이 실행 되지 않습니다 ㅠㅠㅠ

0

138

1

html 변경하는 부분 적용 문제

0

103

1

한글 깨짐

0

76

2

메서드 추출에 대해서 궁금한게 있습니다

0

69

1