如何将搜索条件声明为参数 REST API 方法

Posted

技术标签:

【中文标题】如何将搜索条件声明为参数 REST API 方法【英文标题】:How to declare search criteria as argument REST API method 【发布时间】:2020-07-21 13:06:23 【问题描述】:

URI 看起来像 /api/v2/Employee?filter[search_key]=1234 我想为上述 URI 定义 REST API 方法,但我不知道如何使用 [search_key]

    @Path("/Employee")
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public interface EmployeeServices 
    
    
    @GET
    public List<Employee> searchEmployee(@QueryParam("filter") String filter);

【问题讨论】:

您的问题无法理解,请描述您的问题并阅读如何在 *** 上正确发布问题。 【参考方案1】:

请澄清您的问题。

您可以通过以下方式将 URL 中提供的路径参数用于您的应用程序:

@GET
@Path("/Employee/filter")
@Produces(MediaType.APPLICATION_JSON)
public List<Employee> searchEmployee(@PathParam("filter") String filter)
   //your code

如果你想在这里做一些实际的后端处理(创建一个控制器类),那么这应该是一个类而不是一个接口。

如果您真的打算使用@QueryParam,请查看此帖子: When to use @QueryParam vs @PathParam

【讨论】:

thnaks 我的问题是如何为上面的 url 括号部分编写方法签名 [] 此答案中的 "filter" 可以替换为任何内容。您只需要在签名中获得与 URL 中相同的 QueryParam / PathParam。 "[" 是一个通用分隔符,如果不对其进行编码,您将无法在 URL 中使用它。 RFC 3986 定义了以下可用作分隔符的保留字符集。因此,它们需要 URL 编码: : / ? #/[]/@! $ & ' ( ) * + , ; = 在此处检查字符的 URL 编码:urlencoder.org

以上是关于如何将搜索条件声明为参数 REST API 方法的主要内容,如果未能解决你的问题,请参考以下文章