Spring Boot 集成 resteasy篇 — jax-rs常用注解介绍

Spring Boot 集成 resteasy篇 — jax-rs常用注解介绍

@GET

http请求方式里面的get请求,标记这个请求方式为get

    /**
     * http://localhost:8080/v1/province/city/1
     * @param id
     * @return
     */
    @Path("city/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON) //表示输出json
    @Consumes(MediaType.APPLICATION_JSON) //表示输入为json
    public Result<Boolean> getCity(@PathParam("id") Long id) {

        return new Result<>();
    }

@PUT

http请求方式里面的get请求,标记这个请求方式为put

一般用来创建一个资源

@Path("city/{id}")
@PUT
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Result<Boolean> getCity(@PathParam("id") Long id) {

  return new Result<>();
}

@POST

http请求方式里面的get请求,标记这个请求方式为post

一般用来创建和更新

@Path("city/{id}")
@POST
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Result<Boolean> postCity(@PathParam("id") Long id) {

  return new Result<>();
}

@DELETE

http请求方式里面的get请求,标记这个请求方式为delete

一般用来删除一个资源

@Path("city/{id}")
@DELETE
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public Result<Boolean> postCity(@PathParam("id") Long id) {
  return new Result<>();
}

@PathParam

一般url里面的参数用PathParam

   /**
     * http://localhost:8080/v1/province/city/1
     * @param id
     * @return
     */
    @Path("city/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON) //表示输出json
    @Consumes(MediaType.APPLICATION_JSON) //表示输入为json
    public Result<Boolean> getCity(@PathParam("id") Long id) {

        return new Result<>();
    }

@QueryParam

可以输出url后面的参数

  /**
     * http://localhost:8080/v1/province/queryCity/1?name=wh
     * @param id
     * @return
     */
    @Path("queryCity/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Result<Boolean> queryCity(@PathParam("id") Long id,@QueryParam("name")String name) {
        System.out.println(name);
        return new Result<>();
    }

@HeaderParam

/**
     * http://localhost:8080/v1/province/queryCity/1?name=wh
     * @param id
     * @return
     */
    @Path("queryCity/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Result<Boolean> queryCity(@HeaderParam("auth")String authKey,@PathParam("id") Long id,@QueryParam("name")String name) {
        System.out.println(name);
        System.out.println(authKey);
        return new Result<>();
    }

效果如下图

@CookieParam

/**
     * http://localhost:8080/v1/province/queryCity/1?name=wh
     * @param id
     * @return
     */
    @Path("queryCity/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Result<Boolean> queryCity(@CookieParam("__utma")String sessionId,@HeaderParam("auth")String authKey,@PathParam("id") Long id,@QueryParam("name")String name) {
        System.out.println(name);
        System.out.println(sessionId);
        System.out.println(authKey);
        return new Result<>();
    }

注: _utma是postman里面自带的一个cookie,所以直接调用就可以拿到值,不用额外设置

@MatrixParam

matrixParam一般是用来分离参数的,一般和分号一起使用,下例中,分号后面的from被成功识别打印

/**
     * http://localhost:8080/v1/province/queryCity/1;from=wh?name=sh
     * @param id
     * @return
     */
    @Path("queryCity/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Result<Boolean> queryCity(@MatrixParam("from")String from,@CookieParam("__utma")String sessionId,@HeaderParam("auth")String authKey,@PathParam("id") Long id,@QueryParam("name")String name) {
        System.out.println(id);
        System.out.println(name);
        System.out.println(sessionId);
        System.out.println(authKey);
        System.out.println(from);
        return new Result<>();
    }
1
sh
111872281.1804816201.1493794349.1495509065.1496976869.12
xsdfarewrsdfjnainrfa;ewe==
wh

@FormParam

postman里面改为post请求,表单中添加age参数,得到输出

/**
     *  http://localhost:8080/v1/province/city/1?name=%22%E5%B0%8F%E6%98%8E%22
     * @param id
     * @param name
     * @return
     */
    @POST
    @Path("city/{id}")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)
    public Result<Boolean> addBook(@FormParam("age")Integer age,@PathParam("id") String id, @QueryParam("name") String name) {
        System.out.println(id);
        System.out.println(name);
        System.out.println(age);
        return new Result<>();
    }
1
sh
23

@Form

这个注解,允许你将你的form注入到一个实体里面,看例子吧

public class MyForm {
    @FormParam("age")
    private int age;
    @HeaderParam("auth")
    private String authKey;
    @PathParam("id")
    private String id;

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void setAuthKey(String authKey) {
        this.authKey = authKey;
    }

    public String getAuthKey() {
        return authKey;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }
}
@PUT
@Path("city/{id}")
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Result<Boolean> addForm(@Form MyForm form) {
    System.out.println(JSON.toJSONString(form));
    return new Result<>();
}

输出

{"age":23,"authKey":"xsdfarewrsdfjnainrfa;ewe==","id":"1"}

同样也可以把@Form注入到一个实体里面去

@DefaultValue

 /**
     * http://localhost:8080/v1/province/queryCity/1?name=wh
     * @param id
     * @return
     */
    @Path("queryCity/{id}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Result<Boolean> queryCity(@PathParam("id") Long id,@DefaultValue("sh")@QueryParam("name")String name) {
        System.out.println(name);
        return new Result<>();
    }

可以在queryParam前面加一个默认值

@Context

The @Context 注解允许你注入下面这些类
• javax.ws.rs.core.HttpHeaders
• javax.ws.rs.core.UriInfo
• javax.ws.rs.core.Request
• javax.servlet.http.HttpServletRequest
• javax.servlet.http.HttpServletResponse
• javax.servlet.ServletConfig
• javax.servlet.ServletContext
• javax.ws.rs.core.SecurityContext
在filter中使用较多

@Encoded and encoding

/**
     * http://localhost:8080/v1/province/en_city/小明
     * @param name
     * @return
     */
    @Path(value = "en_city/{name}")
    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Consumes(MediaType.APPLICATION_JSON)
    public Result<Boolean> getCity(@PathParam("name")@Encoded String name) {
        System.out.println(name);
        return new Result<>();
    }

输出

%E5%B0%8F%E6%98%8E

可以在这里下载源代码:这里

end

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值