【发布时间】:2018-09-16 10:35:24
【问题描述】:
我使用 jersey 和 spring boot 创建了一个 API。现在,当我在请求正文中使用 Postman 发出 POST 请求时:
{
"name":"something", "email":"something","location":"something","dateOfBirth":"something"
}
它有效。保存此数据的函数是:
@POST
@Path("/addEmployee")
@Produces(MediaType.TEXT_PLAIN)
public String addEmployee(@RequestBody Employee employee) {
service.save(employee);
return "Saved Successfully";
}
员工模型是:
@Entity
@Table(name = "employee")
@XmlRootElement(name = "employee")
@EntityListeners(AuditingEntityListener.class)
public class Employee {
public Employee() {
}
@Id
@Column(nullable = false, name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false, name = "name")
private String name;
@Column(nullable = false, name = "email")
private String email;
@Column(nullable = false, name = "location")
private String location;
@Column(nullable = false, name = "DOB")
private String dateOfBirth;
// getters and setters
这个api是由客户端下面的函数调用的:
@RequestMapping(value = "/addEmployee", method = RequestMethod.GET)
public ModelAndView addEmployee(ModelAndView model) {
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:8080/api/addEmployee";
EmployeeInfo employee = new EmployeeInfo();
employee.setName("Ashish");
employee.setEmail("anyhing");
employee.setDateOfBirth("mybirthday");
employee.setLocation("home");
ResponseEntity<String> response = restTemplate.postForEntity(url, employee, String.class);
model.setViewName("homePage");
return model;
}
员工信息类是:
public class EmployeeInfo {
private String name;
private String email;
private String location;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
我得到的错误是:
2018-09-16 15:57:13.706 ERROR 14892 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.HttpClientErrorException: 404 null] with root cause
org.springframework.web.client.HttpClientErrorException: 404 null
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:86) ~[spring-web-4.3.19.RELEASE.jar:4.3.19.RELEASE]
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:708) ~[spring-web-4.3.19.RELEASE.jar:4.3.19.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:661) ~[spring-web-4.3.19.RELEASE.jar:4.3.19.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:621) ~[spring-web-4.3.19.RELEASE.jar:4.3.19.RELEASE]
at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:415) ~[spring-web-4.3.19.RELEASE.jar:4.3.19.RELEASE]
at com.example.controller.Home.addEmployee(Home.java:82) ~[classes/:na]
还有一长串这样的清单。
调用它的形式是:
<form name="myform" method="post" action="addEmployee" >
<input type="submit" value="Save">
</form>
编辑:在将客户端的方法 = RequestMethod.GET 更改为 RequestMethod.POST 时,没有任何反应,仍然出现相同的错误 我做错了什么?
【问题讨论】:
-
我们应该使用 RequestMethod.POST 的 RequestMethod.GET
-
使用浏览器检查模式,点击提交按钮时检查浏览器控制台发出了什么请求..
-
参见stackoverflow.com/a/36600434/2587435,了解默认的 /error 映射和 404,每个 your comment
标签: java spring spring-mvc spring-boot jersey