1. 파라미터
컨트롤러 클래스에서
메소드에 파라미터를 사용할 때에는..
form 문에 담긴 컨트롤 값으로 넘어오는 것이면,
해당 클래스를 그대로 기술하면 되지만..
@...Mapping("/...")
public foo(ClassA classA) { ... }
request url 의 path 에도 파라미터가 넘어온다면,
@PathVariable 사용
@...Mapping("/.../{param}") // url 의 path 부분에 변수가 들어오기 때문에 PathVariable
public bar(@PathVariable ClassB param, ...) { ... }
JSON 데이타가 (url 호출시 body에) 파라미터로 넘어온다면,
@RequestBody 사용
@...Mapping("/.../{param1}")
public baz(@PathVariable ClassC param1, @RequestBody ClassD param2) { ... }
그렇다면 request 의 head 부분에 들어가는 값은..
이를테면 쿠키값..?
2. 리턴값
form 문을 처리하는 것이라면,
템플릿의 url 이나 redirect 를 String 으로 처리..
public String foo(...) {
...
return "aaa/bbb"; // /aaa/bbb 템플릿 호출. "/aaa/bbb" 라고 해도 되지만, 뭔가 이상해짐
// return "redirect:/ccc/ddd"; // /ccc/ddd url 을 호출하도록 response 하면, 브라우저가 /ccc/ddd 를 호출
}
템플릿에 값을 전달하려면,
Model 처리..
public String foo(..., Model model, RedirectAttributes ra) {
...
model.addAttribute("...", ...);
ra.addFlashAttribute("...", ...); // return 되는 url 을, 브라우저가 서버에 다시 request 할 때 전달되는 파라미터
return ...;
}
Restfull 이라면(JSON/TEXT/XML 형태),
@ResponseBody 사용..
@ResponseBody
public ObjectA bar(...) {
...
return objectA;
}
@Controller 대신 @RestContollrer 를 클래스에 사용했다면,
@ResponseBody 생략.
HTTP 상태코드/헤더/본문 등을 보완하려면,
ResponseEntity 사용..
public ResponseEntity<ObjectA> baz(...) {
...
// return ResponseEntity.status(HttpStatus.OK).body(objectA); // bar() 에서 리턴한 값과 (결과적으로) 동일
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body(null); // bar() 에서 null 을 리턴하는 것과 동등
// ....build() 는 ....body(null) 과 동일 결과
// return objectA != null ?
// ResponseEntity.status(HttpStatus.OK).body(objectA) :
// ResponseEntity.status(HttpStatus.BAD_REQUEST).build();
}
오류인 경우에 관련 메시지나 처리를,
JSON 에 담아서 전달해도 된다.
오류 발생시 관련 내용을 담는 JSON 클래스를 하나 만들어서 활용해 보시길..
'Server Oriented > Spring' 카테고리의 다른 글
Spring import 패키지 (Annotation) (0) | 2024.12.04 |
---|---|
@SpringBootTest 에서 HttpServletRequest 나 HttpSession 등을 mock 하는 방법 (0) | 2024.04.29 |
스프링 Transaction 트랜잭션 (0) | 2023.02.10 |
스프링 파일 업로드 MultipartFile #2/2 (0) | 2023.02.03 |
스프링 파일 업로드 MultipartFile #1/2 (0) | 2023.02.03 |