Java REST API中POST请求如何传递参数实现接口带参调用
JAX-RS POST接口接收URL参数配置方法
针对你当前的接口代码和给出的URL传参示例,可根据传参格式选择对应配置,直接在方法入参上添加对应注解即可获取参数值,无需手动解析请求。
方案1:匹配?id=xxx查询串传参格式
完全适配你给出的示例URL https://localhost:8080/webresources/test?id=123,使用@QueryParam注解绑定查询参数,注解内填写URL中参数的名称,修改后代码如下:
import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.QueryParam; @POST @Path("test") public String newRequest(@QueryParam("id") int id) throws ServletException, IOException, JSONException { // 调用接口传入?id=123时,方法内的id变量直接获取到值123,可直接使用 // 业务逻辑编写... }
如果需要兼容参数未传递的场景,可搭配@DefaultValue设置参数默认值,避免参数缺失触发400错误:
import javax.ws.rs.DefaultValue; @POST @Path("test") public String newRequest(@DefaultValue("0") @QueryParam("id") int id) { // 未传id参数时,id默认赋值为0 }
方案2:路径占位符传参(RESTful风格)
如果你希望URL格式更简洁,实现https://localhost:8080/webresources/test/123形式的调用,可使用@PathParam注解,同时在@Path中配置参数占位符:
import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.PathParam; @POST @Path("test/{id}") // {id}为路径参数占位符,和@PathParam的参数名对应 public String newRequest(@PathParam("id") int id) throws ServletException, IOException, JSONException { // 访问/test/123时,id变量直接获取值123 // 业务逻辑编写... }
补充说明:如果参数是放在POST请求体中传递(比如JSON参数、表单参数),需要使用
@RequestBody(接收JSON/XML格式请求体)或@FormParam(接收x-www-form-urlencoded格式表单参数),不适用于你当前URL带参的场景。
内容的提问来源于stack exchange,提问作者nicole tannous
相关产品推荐
相关产品推荐

