M(Model), V(View), C(Controller)
WebSample 프로젝트
<기본 설정>
* 언어 : Java
* 타입 : Gradle
* 프로젝트 SDK : OpenJDK17
* 그룹, 아티팩트 등 기본값
* Java : 11
<종속 요소(Dependency)>
Spring Web
Lombok
Controller/RestController의 차이
매핑 어노테이션
@RequestMapping(value = "/order/1", method = RequestMethod.GET)
public String getOrder(){
log.info("Get some order information");
return "orderId:1, orderAmount:100";
}
축약형 매핑 어노테이션
@PostMapping("/order/1")
public String createOrder(){
log.info("Create order");
}
intellij http test
### create order
POST http://localhost/order/1
파라미터를 넘기는 방법
Get,Delete - PathVariable을 주로 사용
PathVariable : 요새는 id를 path에 넣는 것을 선호
PathVariable("id") String identity;
query-params : 추가적인 정보들 입력
게시판의 검색 필터 페이징에서 많이 사용
@RequestParam 사용법
@GetMapping("/order/{orderId}")
public String getOrder(@PathVariable("orderId") String orderId){
log.info("Get some order information : " + orderId);
return "orderId: " + orderId + ", orderAmount:100";
}
@GetMapping("/order")
public String searchOrder(@RequestParam("orderId") String orderId,
@RequestParam("orderAmount") Integer orderAmount){
log.info("Search order information : " + orderId + ",
orderAmount : " + orderAmount);
return "orderId: " + orderId + ", orderAmount: " + orderAmount;
}
Post, Put(전부다 변경), Patch(일부분 수정)
@RequestBody : http body 정보를 편리하게 받을 수 있음
주로 사용하는 메시지 포맷 : JSON(key, value 데이터)
JSON을 Map또는 JavaBean 객체로 받을 수 있다.
@RequestHeader : http header 정보를 편리하게 받을 수 있음
@PostMapping("/order")
public String createOrder(
@RequestBody OrderCreateRequest orderCreateRequest,
@RequestHeader String userAccountId
){
log.info("Create order : " + orderCreateRequest + ", userAmountId : " + userAccountId);
return "orderId: 2, orderAmount:1000 ";
}