MVC 및 Rest와 함께 Spring Framework 4.0.7을 사용하고 있습니다.
나는 평화롭게 일할 수 있습니다 :
@Controller
ResponseEntity<T>
예를 들면 다음과 같습니다.
@Controller
@RequestMapping("/person")
@Profile("responseentity")
public class PersonRestResponseEntityController {
이 방법으로 (만들기 만하면)
@RequestMapping(value="/", method=RequestMethod.POST)
public ResponseEntity<Void> createPerson(@RequestBody Person person, UriComponentsBuilder ucb){
logger.info("PersonRestResponseEntityController - createPerson");
if(person==null)
logger.error("person is null!!!");
else
logger.info("{}", person.toString());
personMapRepository.savePerson(person);
HttpHeaders headers = new HttpHeaders();
headers.add("1", "uno");
//http://localhost:8080/spring-utility/person/1
headers.setLocation(ucb.path("/person/{id}").buildAndExpand(person.getId()).toUri());
return new ResponseEntity<>(headers, HttpStatus.CREATED);
}
무언가를 돌려주기 위해
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public ResponseEntity<Person> getPerson(@PathVariable Integer id){
logger.info("PersonRestResponseEntityController - getPerson - id: {}", id);
Person person = personMapRepository.findPerson(id);
return new ResponseEntity<>(person, HttpStatus.FOUND);
}
잘 작동
나는 다음과 같이 할 수 있습니다 :
@RestController
(나는@Controller
+ 와 동일하다는 것을 알고있다@ResponseBody
)@ResponseStatus
예를 들면 다음과 같습니다.
@RestController
@RequestMapping("/person")
@Profile("restcontroller")
public class PersonRestController {
이 방법으로 (만들기 만하면)
@RequestMapping(value="/", method=RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
public void createPerson(@RequestBody Person person, HttpServletRequest request, HttpServletResponse response){
logger.info("PersonRestController - createPerson");
if(person==null)
logger.error("person is null!!!");
else
logger.info("{}", person.toString());
personMapRepository.savePerson(person);
response.setHeader("1", "uno");
//http://localhost:8080/spring-utility/person/1
response.setHeader("Location", request.getRequestURL().append(person.getId()).toString());
}
무언가를 돌려주기 위해
@RequestMapping(value="/{id}", method=RequestMethod.GET)
@ResponseStatus(HttpStatus.FOUND)
public Person getPerson(@PathVariable Integer id){
logger.info("PersonRestController - getPerson - id: {}", id);
Person person = personMapRepository.findPerson(id);
return person;
}
내 질문은 :
- 때 고체 이유로 또는 특정 시나리오 하나의 옵션 다른 이상 의무적으로 사용해야합니다
- (1)이 중요하지 않은 경우 어떤 접근 방식이 제안되며 그 이유는 무엇입니까?
ResponseEntity
. 더 유연합니다. 에 대한 의문이 생겼습니다@RestController
. 감사합니다