Я новичок в Spring MVC, и я раскрываю службы REST. Мои службы GET
работают нормально, но вызов POST
от Postman отправляет пустые значения null
в виде полей.
Ниже приведен пример службы REST, использующей различные формы аннотаций POST
. Я застрял на этом последние 3 дня. Пожалуйста помоги.
package com.cgi.ehr.rest;
import javax.ejb.EJB;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import com.cgi.ehr.services.dao.UserDetailsDAO;
import com.cgi.test.dto.InputDto;
@RestController
@RequestMapping("/bookmarks")
public class CheckingService {
@EJB
UserDetailsDAO userDetailsDAO;
@RequestMapping(value = "/bookmark", method = RequestMethod.GET)
public InputDto testM() {
return userDetailsDAO.testMethod();
}
@RequestMapping(value = "/testM2", method = RequestMethod.GET,headers="Accept=*/*", produces="application/json")
//@Produces(MediaType.APPLICATION_JSON)
public InputDto testM2() {
InputDto d = new InputDto("1","2");
return d;
}
@RequestMapping(value = "/bookmarkPost", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
//@ResponseBody
public InputDto testPost(InputDto inputDto) {
String age = inputDto.getTestAge();
String name = inputDto.getTestname();
InputDto dto = new InputDto();
dto.setTestAge(age + "gotback");
dto.setTestname(inputDto.getTestname() + "gotback");
return dto;
}
@RequestMapping(value = "/bookmarkPost1", method = RequestMethod.POST)
public InputDto testPost1(InputDto inputDto) {
String age = inputDto.getTestAge();
String name = inputDto.getTestname();
InputDto dto = new InputDto();
dto.setTestAge(age + "gotback");
dto.setTestname(inputDto.getTestname() + "gotback");
return dto;
}
@RequestMapping(value = "/person", method = RequestMethod.POST, headers = "Accept=application/xml, application/json")
public @ResponseBody InputDto addPerson(@RequestBody InputDto inputDto) {
return inputDto;
}
}
`
package com.cgi.test.dto;
import java.io.Serializable;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class InputDto implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private String testname;
private String testAge;
public String getTestname() {
return testname;
}
public void setTestname(String testname) {
this.testname = testname;
}
public String getTestAge() {
return testAge;
}
public void setTestAge(String testAge) {
this.testAge = testAge;
}
public InputDto() {
super();
}
public InputDto(String testname, String testAge) {
this.testname = testname;
this.testAge = testAge;
}
}
3 ответа
Ваш метод testPost должен выглядеть, как показано ниже. Теперь вы можете использовать тот же запрос с помощью Postman.
@RequestMapping(value = "/bookmarkPost", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE,consumes = MediaType.APPLICATION_JSON_VALUE)
public @ResponseBody InputDto testPost(@RequestBody InputDto inputDto) {
String age = inputDto.getTestAge();
String name = inputDto.getTestname();
InputDto dto = new InputDto();
dto.setTestAge(age + "gotback");
dto.setTestname(name + "gotback");
return dto;
}
В вашем классе InputDto
ваши установщики правильно устанавливают переменную экземпляра this.testXxx
public void setTestname(String testname) {
this.testname = testname;
}
Однако ваши геттеры не возвращают эту переменную экземпляра. Обратите внимание на ваш отсутствующий this.
. Следующее должно исправить вашу текущую проблему, а затем применимо к обоим геттерам.
public String getTestAge() {
return this.testAge;
}
Извините, ребята ... код работал все время, я делал очень глупую ошибку при отправке данных сообщения в почтальоне (я выбрал неправильную вкладку и не отправил ее в "теле") ... я потратил 3 дня на это !!!! .. в любом случае еще раз спасибо @abaghel
Похожие вопросы
Новые вопросы
java
Java — это высокоуровневый объектно-ориентированный язык программирования. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег часто используется вместе с другими тегами для библиотек и/или фреймворков, используемых разработчиками Java.