SpringBoot中GET请求URL参数提取方法咨询
解决GET请求参数提取问题
没问题,这事儿在JAX-RS里其实很简单,你只需要用@QueryParam注解来绑定URL里的查询参数就行。直接修改你的方法,把参数加进去:
@GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response getEmployee( @QueryParam("firstName") String firstName, @QueryParam("lastName") String lastName ) { // 现在你就可以直接用firstName和lastName变量来做业务逻辑了 // 比如筛选员工示例: Employee targetEmployee = employeeService.getByNames(firstName, lastName); if (targetEmployee != null) { return Response.ok(targetEmployee).build(); } else { return Response.status(Response.Status.NOT_FOUND).build(); } }
补充细节说明:
@QueryParam会自动把URL中对应名称的查询参数值绑定到方法参数上,注意注解里的参数名要和URL里的完全匹配(比如你请求里的firstName、lastName,注解字符串不能写错大小写)。- 如果请求可能不传某个参数,你可以搭配
@DefaultValue设置默认值,比如:@QueryParam("firstName") @DefaultValue("") String firstName,这样没传参数时变量会被设为空字符串,避免空指针问题。 - 要是你需要一次性获取所有查询参数,也可以用
@Context UriInfo来拿到完整参数集合,适合参数多或者动态处理的场景:
@GET @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response getEmployee(@Context UriInfo uriInfo) { MultivaluedMap<String, String> allQueryParams = uriInfo.getQueryParameters(); String firstName = allQueryParams.getFirst("firstName"); String lastName = allQueryParams.getFirst("lastName"); // 后续业务逻辑处理... }
内容的提问来源于stack exchange,提问作者DoArNa
相关产品推荐
相关产品推荐

