我想以这种方式调用我的api端点:
http://.../companies/1/employees
@H_404_8@@Path("companies") public class CompanyResource { @Context ResourceContext resourceContext; @GET @Path("{idCompany}/employees") public EmployeeResource getEmployees() { return resourceContext.getResource(EmployeeResource.class); } }
@H_404_8@和
@Path("/employees") public class EmployeeResource { @PathParam("idCompany") String idCompany; @GET public List
@H_404_8@ 但路径参数为空.我究竟做错了什么?有没有更正确的方法来做到这一点?
最佳答案
我无法重现null id,但有几点需要指出
原文链接:https://www.f2er.com/java/438170.html>应从EmployeeResource getEmployees()方法中删除@GET.子资源定位器不应具有HTTP方法注释.见Sub-resources
>还忽略了EmployeeResource上的@Path(不需要).不是问题,只是认为你应该知道.
下面是使用Jersey Test Framework的完整工作示例.以下是我使用的测试依赖项
@H_404_8@
您可以像任何其他JUnit测试一样运行它
import java.util.ArrayList;
import java.util.List;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.container.ResourceContext;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.glassfish.jersey.server.ResourceConfig;
import org.glassfish.jersey.test.JerseyTest;
import org.junit.Test;
import static junit.framework.Assert.*;
public class LocatorTest extends JerseyTest {
public static class Employee {
public String firstName;
public String lastName;
public Employee(){}
public Employee(String firstName,String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
public static class Company {
public String companyId;
public List@H_404_8@