반응형
요청 매핑
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 |