Spring MVC - HTTP 요청 / 응답

박근수·2024년 2월 25일
0

Spring

목록 보기
7/11
post-custom-banner

Spring MVC 프로젝트 생성

WebSample 프로젝트
<기본 설정>
* 언어 : Java
* 타입 : Gradle
* 프로젝트 SDK : OpenJdk17
* 그룹, 아티팩트 등 기본값
* Java : 11

<Dependency>
Spring Web, Lombok

스프링 기본 HTTP 요청 매핑

Controller, RestController 차이

  • Controller : 응답값이 기본적으로 HTML을 주도록 되어있음
  • RestController : 응답값으로 Rest API 요청에 대한 응답(주로 JSON)을 주도록 되어있음

매핑 어노테이션

  • @RequestMapping : GET, POST 등 요청 방식을 직접 지정
@RequestMapping(value = " /order/1", method = RequestMethod.GET)
public String getOrder(){
	log.info("Get some order information");
    return "orderId:1, orderAmount:100";
}
  • 축약형 매핑 어노테이션
    • @GetMapping : 데이터를 가져옴
    • @PostMapping : 데이터를 전송함
    • @PutMapping : 전체 수정
    • @PatchMapping : 일부 수정
    • @DeleteMapping : 삭제
 @GetMapping("/order/1")
    public String getOrder(){
        log.info("Get some order");
        return "orderId:1, orderAmount:1000";
    }

    @PostMapping("/order/1")
    public String createOrder(){
        log.info("Create order");
        return "orderId:2, orderAmount:1000";
    }

스프링 HTTP 요청 파라미터 전송

파라미터 넘기는 법

  • GET, DELETE
    • PathVariable : 요새는 id를 path에 넣는 것을 선호
      • @PathVariable("id") String identity;
      • 하지만 이름이 같은 생략 가능 (여러 개 넣을 수 있음)
    • query-parmas : 추가적인 정보들 입력
      • 게시판의 검색 필터 페이징에서 많이 사용
      • @RequestParam 사용법
        • PathVariable처럼 이름을 동일하게 하면 자동을 받아줌
        • required, defaultValue 옵션 설명
        • Map, MultiValueMap으로 요청 받는 방법
 @GetMapping("/order/{orderId}")
    public String getOrder(@PathVariable("orderId") String id){
        log.info("Get some order" + id);
        return "orderId:" + id + ", orderAmount:1000";
    }

    @GetMapping("/order")
    public String getOrderWithRequestParam(
            @RequestParam("orderId") String id,
            @RequestParam("orderAmount") String amount){
        log.info("Get order" + id + " , " + amount);
        return "orderId:" + id + ", orderAmount:" + amount;
    }
  • Post, Put, Patch
    • @RequestBody : http body 정보를 편리하게 받을 수 있음
      • 주로 사용하는 메세지 포멧은 JSON(현재 사실상의 표준)
    • @RequestHeader : http header 정보를 편리하게 받을 수 있음
@PostMapping("/order")
    public String createOrder(
            @RequestBody OrderCreateRequest orderCreateRequest,
            @RequestHeader String userAccountId){
        log.info("Create order : " + orderCreateRequest + ", userAccountId : " + userAccountId);
        return "orderId : " + orderCreateRequest.orderId + ", " + "orderAmount : " + orderCreateRequest.orderAmount;
    }
    
@Data
public static class OrderCreateRequest{
    private String orderId;
    private Integer orderAmount;
}
profile
개발블로그
post-custom-banner

0개의 댓글