Страницы

Поиск по вопросам

среда, 17 июля 2019 г.

Как вытащить данные из Rest-ответа?

Нужно из запроса создать объект класса User
Есть класс User
public class User {
private String id; private String firstName; private String lastName; private String userName; private String plainTextPassword; private String hashedPassword; }
Есть метод в контроллере по созданию нового пользователя
@RequestMapping(value = "/registration", method = RequestMethod.POST) public ResponseEntity update(@RequestBody User us) {
return new ResponseEntity(us, HttpStatus.OK); }
И есть репозиторий
@Repository public interface UserRepository { User createUser(User user) throws UserAlreadyExistsException; }
С помощью Advanced REST Client делаю запрос
Проблема состоит в том, что не знаю как из ответа вытащить данные о пользователе и создать нового пользователя. Может есть какой-то метод типа Scanner для Rest-сервисов?


Ответ

Немного переделал структуру проекта. Проблему решил с помощью JsonNode и ObjectMapper
Репозиторий:
@Repository public interface UserRepository extends CrudRepository { User save(User user); }
Интерфейс UserService:
public interface UserService { User addNewUser(User user); }
и его implemented класс:
@Service @Transactional public class UserServiceImpl implements UserService { @Autowired private UserRepository userRepository;
@Override public User addNewUser(User user) { return userRepository.save(user); } }
И сам контроллер:
@RestController public class UserController {
private ObjectMapper mapper = new ObjectMapper();
@Autowired private UserService userService;
@RequestMapping(value = "/registration", method = RequestMethod.POST) public ResponseEntity update(@RequestBody JsonNode user) throws JsonProcessingException { User newUser = mapper.treeToValue(user, User.class); if (userService.addNewUser(newUser) != null) { return new ResponseEntity(HttpStatus.OK); } else { return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR); } } }

Комментариев нет:

Отправить комментарий