如何将搜索条件声明为参数 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 方法的主要内容,如果未能解决你的问题,请参考以下文章

将 REST API 获取请求转换为 GraphQL

Rest api如何获取参数?

您将如何使用 Spring Boot 处理仅具有可选查询参数的 REST API?

如何使用Map从Rest API中的URI绑定java方法的参数值

如何使用 Swift URLSession 通过 REST api 将图像和其他参数作为表单数据发布?

如何对接受参数的方法进行 REST API 调用