[SpringMVC] 요청 매핑, API 요청 매핑

2022. 11. 23. 21:02·프레임워크/Spring
반응형

요청 매핑

package hello.springmvc.basic.requestmapping;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
public class MappingController {

    @RequestMapping(value = "/hello-basic", method = RequestMethod.GET)
    public String helloBasic(){
        log.info("helloBasic");
        return "ok";
    }

    @GetMapping(value = "/mapping-get-v1")
    public String mappingGetV1(){
        log.info("helloBasic");
        return "ok";
    }

    @PostMapping(value = "/mapping-get-v2")
    public String mappingGetV2(){
        log.info("helloBasic");
        return "ok";
    }

    /**
     * PathVariable 사용
     * 변수명이 같으면 생략 가능
     * @PathVariable("userId) String uerId -> @PathVariable userId
     * /mapping/userA
     */
    @GetMapping("/mapping/{userId}")
    public String mappingPath(@PathVariable("userId") String data){
        log.info("mappingPath userId={}",data);
        return "ok";
    }

    /**
     * PathVariable 다중
     */
    @GetMapping("/mapping/users/{userId}/orders/{orderId}")
    public String mappingPath2(@PathVariable String userId, @PathVariable String orderId){
        log.info("mappingPath userId={}, orderId={}",userId, orderId);
        return "ok";
    }

    /**
     * 파라미터로 추가 매핑
     * params="mode",
     * params="!mode",
     * params="mode=debug"
     * params="mode!=debug"
     * params={"mode=debug","data=good"}
     */
    @GetMapping(value = "/mapping-param", params = "mode=debug")
    public String mappingParam(){
        log.info("mappingParam");
        return "ok";
    }

    /**
     * 특정 헤더로 추가 매핑
     * headers="mode",
     * headers="!mode",
     * headers="mode=debug"
     * headers="mode!=debug"
     */
    @GetMapping(value = "/mapping-header", headers = "mode=debug")
    public String mappingHeader(){
        log.info("mappingHeader");
        return "ok";
    }

    /**
     * Content-Type 헤더 기반 추가 매핑 Media Type
     * consume="application/json"
     * consume="!application/json"
     * consume="application/*"
     * consume="*\/*"
     * MediaType.APPLICATION_JSON_VALUE
     */
    @PostMapping(value = "/mapping-consume", consumes = "application/json")
    public String mappingConsume(){
        log.info("mappingConsume");
        return "ok";
    }

    /**
     * Acccpt 헤더 기반 Media Type
     * produces = "text/html"
     * produces = "!text/html"
     * produces = "text/*"
     * produces = "*\/*"
     */
    @PostMapping(value = "/mapping-produce", produces = "text/html")
    public String mappingProduces(){
        log.info("mappingProduces");
        return "ok";
    }

}

 

요청 매핑 - API 예시

package hello.springmvc.basic.requestmapping;

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/mapping/users")
public class MappingClassController {

    /**
     * /mapping : 강의의 다른 예제들과 구분하기 위해 사용
     *
     * 회원 목록 조회 : GET       '/users'
     * 회원 등록 :     POST      '/users'
     * 회원 조회 :     GET       '/users/{userId}'
     * 회원 수정 :     PATCH     '/users/{userId}'
     * 회원 삭제 :     DELETE    '/users/{userId}'
     */

    @GetMapping()
    public String user(){
        return "get users";
    }

    @PostMapping()
    public String addUser(){
        return "post user";
    }

    @GetMapping("/{userId}")
    public String findUser(@PathVariable String userId){
        return "get userId = " + userId;
    }

    @PatchMapping ("/{userId}")
    public String updateUser(@PathVariable String userId){
        return "update userId = " + userId;
    }

    @DeleteMapping ("/{userId}")
    public String DeleteUser(@PathVariable String userId){
        return "delete userId = " + userId;
    }

}
반응형
저작자표시 (새창열림)

'프레임워크 > Spring' 카테고리의 다른 글

스프링 컨테이너와 스프링 빈  (1) 2022.11.05
[Spring] @ResponseBody 어노테이션  (0) 2022.06.07
[Spring] Spring의 컨텍스트?  (0) 2021.07.12
[Spring] sts3, 이클립스 Spring Legacy Project 기본 구조  (0) 2021.07.11
'프레임워크/Spring' 카테고리의 다른 글
  • 스프링 컨테이너와 스프링 빈
  • [Spring] @ResponseBody 어노테이션
  • [Spring] Spring의 컨텍스트?
  • [Spring] sts3, 이클립스 Spring Legacy Project 기본 구조
:j
:j
ddongjunn@gmail.com
  • :j
    dev.j
    :j
  • 전체
    오늘
    어제
    • :j
      • 프로그래밍 언어
        • Java
        • html
        • JavaScript
        • XML
        • JSON
        • CSS
        • jQuery
        • Web
        • k8s
        • JPA
      • 프레임워크
        • Spring
      • 코딩 테스트
        • Java
      • 네트워크
        • CCNA
      • 데이터베이스
        • Mssql
        • Oracle
      • 회고
      • :j story
      • CS
  • 블로그 메뉴

    • 홈
    • 태그
    • github
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Name
    HAVING
    항해플러스
    항해99
    id
    항해플러스백엔드
    appendChild
    오버라이딩
    다형성
    항해백앤드
    MSSQL
    class
    오버로딩
    Queue
    항해솔직후기
    <br>
    멤버변수
    항해플러스백앤드
    지역변수
    group by
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
:j
[SpringMVC] 요청 매핑, API 요청 매핑
상단으로

티스토리툴바