我正在开发REST Web Service
应用程序,但在使用 REST Client POSTMAN
时,正文选项卡显示已停用。
我创建了一个名为EmployeeController的类,它处理URI调用,如下所示:
package com.Employee;
@Path("/response")
public class EmployeeController {
EmployeeService employeeService = new EmployeeService();
@GET
@Produces(MediaType.APPLICATION_JSON)
public Response getAllEmployee(){
List<Employee> emp = employeeService.getAllEmployee();
return Response.status(Status.CREATED).entity(emp).build();
}
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response addEmployee(Employee emp){
Employee e = employeeService.addEmployee(emp);
return Response.status(Status.CREATED).entity(emp).build();
}
}
方法getAllEmployee()检索员工的所有详细信息,方法addEmployee()添加员工。
在web.xml
文件中进行了以下更改:
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>RestPathAnnotationExample</display-name>
<servlet>
<servlet-name>jersey-serlvet</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.Employee</param-value>
</init-param>
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jersey-serlvet</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>
</web-app>
在POM.xml中添加了两个maven依赖项:jersey-server和jersey-json。
由于POSTMAN中的Body部分被禁用,代码中是否存在任何问题?
答案 0 :(得分:0)
除了litelite关于GET请求没有正文的评论之外,我建议您更多地了解API的工作原理。 https://softwareengineering.stackexchange.com/questions/203844/what-does-it-mean-to-expose-something
您的REST代码仅公开URL以及CRUD方法“返回”的任何数据。对代码的任何其他更改(如pom.xml)都是隐藏的,与消费者无关;如果不是这样的话,请考虑安全漏洞。而且,POSTMAN是一种测试工具。它显示,发送和拦截数据,但不会根据数据修改其行为。