Я немного новичок в концепции SpringMVC REST. Нужна помощь экспертов здесь, чтобы понять / решить следующую проблему,
Я разработал приложение SpringMVC, следующее является частью кода класса контроллера, и оно отлично работает в том виде, в каком оно есть, то есть оно нормально работает с объектом типа JSON,
@RequestMapping(method = RequestMethod.POST, value = "/user/register")
public ModelAndView addUser( @RequestBody String payload) {
try{
ObjectMapper mapper = new ObjectMapper();
CreateNewUserRequest request = mapper.readValue(payload, CreateNewUserRequest.class);
UserBusiness userBusiness = UserBusinessImpl.getInstance();
CreateNewUserResponse response = userBusiness.createNewUser(request);
return new ModelAndView(ControllerConstant.JASON_VIEW_RESOLVER, "RESPONSE", response);
и это мой rest-servlet.xml выглядит как
<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" />
<bean id="jsonViewResolver" class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />
<bean id="viewResolver" class="org.springframework.web.servlet.view.BeanNameViewResolver" />
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
<bean name="UserController" class="com.tap.mvp.controller.UserController"/>
Моя проблема в том, как мне заставить его работать для обычного запроса POST. Мой контроллер не должен принимать объект типа JSON, вместо этого он должен работать для обычных переменных HTTP POST.
Как я могу получить значения из запроса? Какие изменения мне нужно сделать для этого. Мне нужно избавиться от
ObjectMapper mapper = new ObjectMapper();
CreateNewUserRequest request = mapper.readValue(payload, CreateNewUserRequest.class);
и вместо этого нужно добавить способ создания экземпляра
CreateNewUserRequest
class, вызывая его конструктор. Для этого мне нужно получить значения из запроса. Как я могу это сделать? Могу ли я обработать @ RequestBody String полезную нагрузку как карту и получить значения? или есть конкретный способ получить значения из запроса метода HTTP POST? следующие значения будут в запросе,
имя, фамилия, адрес электронной почты, пароль