首页 > 解决方案 > 在两个 REST API 之间映射查询参数

问题描述

我想使用 Rest Client 来查询这个端点:https://landregistry.data.gov.uk/data/ppi/transaction-record.json。如果您访问基本 URI https://landregistry.data.gov.uk/data/ppi/transaction-record,您可以看到端点可以接受多个查询参数。例如,这是一个有效的 url:https://landregistry.data.gov.uk/data/ppi/transaction-record.json?propertyAddress.postcode=M40%200JE

由于我确定这不是一个新用例,因此我想知道在要公开的端点和可用于创建要调用的 URI 的查询参数之间创建“映射”的最佳方法是什么?

换句话说,以上面的示例为例,我的服务将公开如下内容:

localhost:8080/transactions?postcode=M400JE

这将调用:

https://landregistry.data.gov.uk/data/ppi/transaction-record.json?propertyAddress.postcode=M40%200JE

因此,邮政编码应翻译为 propertyAddress.postcode。另外 20 个潜在的查询参数也是如此。

标签: javajax-rsquarkus

解决方案


据我所知,您无法自动执行任何操作。

您的端点将是:

@Path("/transaction")
public class GreetingResource {

    @Inject
    LandRegistryClient client;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    public SomeType transaction(@QueryParam("postcode") String postcode) {
        return client.transactionRecord(postcode);
    }

}

REST 客户端将是:

@Path("/data/ppi")
@RegisterRestClient
public interface CountriesService {

    @GET
    @Path("transaction-record.json")
    @Produces(MediaType.APPLICATION_JSON)
    SomeType transactionRecord(@QueryParam("propertyAddress.postcode") String postcode);


}

推荐阅读