加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 将@PathParam传递给Jersey中的Sub Resource locator类

发布时间:2020-12-14 19:21:11 所属栏目:Java 来源:网络整理
导读:我想以这种方式调用我的api端点: http://.../companies/1/employees 并使用代码1检索公司的员工.我有以下代码: @Path("companies")public class CompanyResource { @Context ResourceContext resourceContext; @GET @Path("{idCompany}/employees") public

我想以这种方式调用我的api端点:

http://.../companies/1/employees

并使用代码1检索公司的员工.我有以下代码:

@Path("companies")
public class CompanyResource {

    @Context
    ResourceContext resourceContext;

    @GET
    @Path("{idCompany}/employees")
    public EmployeeResource getEmployees() {
        return resourceContext.getResource(EmployeeResource.class);
    }

}

@Path("/employees")
public class EmployeeResource {

    @PathParam("idCompany")
    String idCompany;

    @GET
    public List

但路径参数为空.我究竟做错了什么?有没有更正确的方法来做到这一点?

最佳答案
我无法重现null id,但有几点需要指出

>应从EmployeeResource getEmployees()方法中删除@GET.子资源定位器不应具有HTTP方法注释.见Sub-resources
>还忽略了EmployeeResource上的@Path(不需要).不是问题,只是认为你应该知道.

下面是使用Jersey Test Framework的完整工作示例.以下是我使用的测试依赖项


您可以像任何其他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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读