[SPRING] Spring MVC에서 PUT 요청
SPRINGSpring MVC에서 PUT 요청
Spring MVC에서 간단한 PUT 요청 메소드를 작성하려고합니다. 나는 다음과 같은 것을 가지고있다.
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT)
public @ResponseBody User updateUser(@PathVariable("id") long id,
String name,
String email) {
User user = repository.findOne(id);
user.setName(name);
user.setEmail(email);
System.out.println(user.toString());
repository.save(user);
return user;
}
이것은 분명히 잘못되었습니다. 다음을 반환하기 때문입니다.
User{id=1, name='null', email='null'}
또한 @RequestBody 주석을 사용하여 시도했지만 도움이되지 않았습니다. 내가 여기서 잘못하고있는 아이디어는 크게 감사 할 것입니다.
해결법
-
==============================
1.요청에서 이름과 이메일 매개 변수를 바인딩하는 방법을 봄에 알리지 않았습니다. 예를 들어 @RequestParam을 추가하면 다음과 같습니다.
요청에서 이름과 이메일 매개 변수를 바인딩하는 방법을 봄에 알리지 않았습니다. 예를 들어 @RequestParam을 추가하면 다음과 같습니다.
public @ResponseBody User updateUser(@PathVariable("id") long id, @RequestParam String name, @RequestParam String email) { ... }
이름 및 이메일 매개 변수가 요청의 쿼리 문자열에서 채워집니다. 예를 들어 /users/1?name=Josh&email=jb@ex.com에 요청을하면 다음과 같은 응답을 받게됩니다 :
User{id=1, name='Josh', email='jb@ex.com'}
핸들러 메소드 정의에 대한 더 많은 통찰력을 얻으려면 스프링 문서를 확인하십시오.
-
==============================
2.@RequestBody 주석을 사용하여 이름과 이메일을받을 수 있습니다.
@RequestBody 주석을 사용하여 이름과 이메일을받을 수 있습니다.
@RequestMapping(value = "/users/{id}", method = RequestMethod.PUT) public @ResponseBody User updateUser(@PathVariable("id") long id, @RequestBody User user) {}
URL이 더 깨끗하고 스타일이 좋아 지므로 REST 애플리케이션의 경우 더 나은 방법입니다. 사용자에게 @Valid 어노테이션을 넣고 속성을 검증 할 수도 있습니다.
우편 배달부 클라이언트에서는 URL이 아닌 요청 본문에 JSON으로 사용자를 보냅니다. User 클래스에는 전송 된 JSON 객체의 동일한 필드가 있어야 함을 잊지 마십시오.
여길 봐:
from https://stackoverflow.com/questions/35878351/put-request-in-spring-mvc by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] dropwizard에서 비동기 작업 실행 및 상태 폴링 (0) | 2019.04.14 |
---|---|
[SPRING] Spring 데이터 나머지 - _embedded에 중첩 된 리소스 포함 (0) | 2019.04.14 |
[SPRING] JSF와 Spring의 통합 (0) | 2019.04.14 |
[SPRING] Apache Camel - 분할 및 집계 - 이전 Exchange는 항상 null입니다. (0) | 2019.04.14 |
[SPRING] 최대 절전 모드 스프링 주석 세션이 닫히지 않았거나 플러시되지 않음 (0) | 2019.04.14 |