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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
您可以按照以下步骤将JAX-WS接口替换为JAX-RS接口: 1. 创建JAX-RS接口:创建一个新的Java接口来定义您的JAX-RS服务。在接口上使用`@Path`注解指定资源的URL路径。 ```java import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; @Path("/your-resource") public interface YourResource { @GET @Produces(MediaType.APPLICATION_JSON) String getResource(); } ``` 2. 实现JAX-RS接口:创建一个类来实现您的JAX-RS接口,并实现接口中定义的方法。 ```java public class YourResourceImpl implements YourResource { @Override public String getResource() { // 实现您的业务逻辑 return "Hello JAX-RS!"; } } ``` 3. 注册JAX-RS服务:将您的JAX-RS服务注册到应用程序中。这可以通过创建一个`javax.ws.rs.core.Application`子类并在其中注册资源类来完成。 ```java import javax.ws.rs.ApplicationPath; import javax.ws.rs.core.Application; import java.util.HashSet; import java.util.Set; @ApplicationPath("/api") public class YourApplication extends Application { @Override public Set<Class<?>> getClasses() { Set<Class<?>> classes = new HashSet<>(); classes.add(YourResourceImpl.class); return classes; } } ``` 4. 配置JAX-RS:根据您使用的应用程序服务器,将JAX-RS的实现(如Jersey或RestEasy)添加到您的应用程序的构建配置文件中。您还需要确保在应用程序服务器上正确配置JAX-RS。 5. 测试JAX-RS接口:启动您的应用程序服务器,并使用JAX-RS客户端或浏览器等工具测试您的JAX-RS接口。 请注意,以上步骤是一般的指导,具体步骤可能因您使用的框架和工具而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值