스프링/스프링 MVC 패턴

API 요청 매핑 타입

chanhee01 2023. 2. 14. 12:50

회원 관리 API

회원 목록 조회:   GET             /users
회원 등록:          POST           /users
회원 조회:          GET             /users/{userId}
회원 수정:          PATCH         /users/{userId}
회원 삭제:          DELETE      /users/{userId}

 

회원 목록 조회와 회원 등록을 보면 url이 같더라도 http 메서드로 구분해서 기능을 다르게 할 수 있다.

 

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

    /**
    회원 목록 조회:  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;
    }
}

실제로 동작은 하지않지만 매핑만 하는 코드이다.

http://localhost:8080/mapping/users/userA url로 접근할 때 Get, Patch, Delete 어떠한 방식을 통해 접근하는지에 따라서 return 값이 바뀐다. 즉, http 접근 방식에 따라서 다른 메서드가 호출된다는 것이다.