컨트롤러
모델과 뷰 사이에서 브릿지 역할
앱 사용자로부터 입력에 대한 응답으로 모델 및 뷰를 업데이트 하는 로직을 포함.
사용자의 요청은 모두 컨트롤러를 통해 진행되어야 함.
컨트롤러로 들어온 요청은 모델이 어떻게 처리할지 결정하여 모델로 요청을 전달함.
@RestController
@Controller @ResponseBody가 결합된 어노테이션.
컨트롤러 클래스 하위 메소드에 @ResponseBody 어노테이션을 붙이지 않아도 문자열과 JSON 등을 전송할 수 있음.
View를 거치지 않고 HTTP ResponseBody에 직접 Return 값을 담아 보내게 됨.
@RequestMapping
MVC의 핸들러 매핑을 위해서 DefaultAnnotationHandlerMapping을 사용.
DefaultAnnotationHandlerMapping 매핑정보로 @RequestMapping 어노테이션을 활용.
클래스와 메소드의 RequestMapping을 통해 URL을 매핑하여 경로를 설정하여 해당 메소드에서 처리.
value : url 설정
method : GET, POST, DELETE, PUT, PATCH 등
메소드 지정하는 방법 대신 아래 방식의 어노테이션을 사용할 수도 있음.
@GetMapping
@PostMapping
@DeleteMapping
@PutMapping
@PatchMapping
GET API
@PathVariable
GET 형식의 요청에서 파라미터를 전달하기 위해 URL에 값을 담아 요청하는 방법.
@GetMapping에서 사용된 {변수}의 이름과 메소드의 매개변수를 일치시켜야 함.
@GetMapping(value="/variable1/{variable}")
public String getVariable1(@PathVariable String variable) {
return variable;
}
@GetMapping에서 사용된 {변수}의 이름과 메소드의 매개변수가 다를 경우
// http://localhost:8080/api/v1/get-api/variable1/{String 값}
@GetMapping(value="/variable2/{variable}")
public String getVariable2(@PathVariable("variable") String var) {
return var;
}
@RequestParam
GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법.
'?'를 기준으로 우측에 {키}={값}의 형태로 전달되며, 복수 형태로 전달할 경우 '&'를 사용함.
@GetMapping(value="/request1")
public String getRequestParam1(
@RequestParam String name,
@RequestParam String email,
@RequestParam String organization) {
return name+" "+email+" "+organization;
}
어떤 요청 값이 들어올지 모를 경우 사용하는 방식
@GetMapping(value="/request2")
public String getRequestParam2(@RequestParam Map<String, String> param) {
StringBuilder sb = new StringBuilder();
param.entrySet().forEach(map-> {
sb.append(map.getKey() + " : " + map.getValue() + "\n";
});
return sb.toString();
}
DTO
GET 형식의 요청에서 쿼리 문자열을 전달하기 위해 사용되는 방법
key와 value가 정해져있지만 받아야 할 파라미터가 많을 경우 DTO 객체를 사용,
@GetMapping(value="/request3")
public String getRequestParam3(MemberDTO memberDTO) {
return memberDTO.toString();
//return memberDTO.getName()+" "+memberDTO.getEmail()+" "+memberDTO..getOrganization();
}
public class MemberDTO {
private String name;
private String email;
private String organization;
...
}
IntelliJ 에서 [alt]+[insert] 를 누른 후 Getter and Setter 선택하면 자동 등록 가능함.
(이걸 여태 안썼다니 모르면 손과 눈이 고생ㅎ;;ㅎ)
크롬 확장 프로그램
Talend API Tester - Free Edition
이거 있으면 postman 필요 없었네.
이런 거 하고 있으니까 바로바로 보이고 좀 재밌다. 쌉초보의 소소한 즐거움ㅎㅎ;;;
'Spring Framework' 카테고리의 다른 글
Controller / Put API, Delete API - @putMapping @deleteMapping (0) | 2023.01.18 |
---|---|
Controller / Post API - @postMapping (0) | 2023.01.18 |
pom.xml (0) | 2023.01.18 |
REST API (0) | 2023.01.17 |
GoF(Gang of Four) 대자인 패턴 (0) | 2023.01.17 |