@javax.ws.rs Webservice注解


1,依赖:

<!-- webService -->
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>javax.ws.rs-api</artifactId>
<version>2.0.1</version>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jersey</artifactId>
</dependency>

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
</dependency>
 

2.路径
@javax.ws.rs.Path
标识要请求的资源类或资源方法的uri路径。
例,@Path("animal"),表示下一层路径是animal时要处理的事务。
@Path("{species}")这种带大括号的表示方法,表示下一层路径会被参数化,配合@PathParam("species")使用可以赋值给函数的参数。

对于代码:

    @Path("animal")
    public class Animal {
        public String species,name;
        public int age;
        public static Animal animal=new Animal();
        
        @GET
        @Path("{species}")
        @Produces(MediaType.APPLICATION_JSON)
        public Animal wsAnimal(@PathParam("species") String species,
                @QueryParam("name") String name,
                @QueryParam("age") int age
                ){
            animal.species=species;
            animal.name=name;
            animal.age=  age==0?2:age;
            return animal;
        }
    }


效果见图1-1:


图 1-1 @Path 用法示例


2.从报文数据到方法参数

@javax.ws.rs.PathParam
将uri中指定的路径参数绑定到资源方法参数,资源类的字段,或资源类的bean属性。

@javax.ws.rs. QueryParam

将http请求的Query参数赋值给函数的参数。

@javax.ws.rs.DefaultValue

设置@QueryParam参数的默认值。如果@QueryParam没有接收到值,就使用默认值。比如:

public String fun(@DefaultValue("description") @QueryParam("desc") String desc){...}

@javax.ws.rs. FormParam

将http请求的Form表单中的参数赋值给函数的参数。

@avax.ws.rs.Context

用于获取环境信息。一个获取客户端ip的例子见下:

    @Path("util")
    public class Util {
        
        @Path("getClientIp")
        @GET
        @Produces(MediaType.TEXT_PLAIN)
        public String getClientIp(@Context HttpServletRequest request){
            return request.getRemoteAddr();
        }
    }


3.http方法

@javax.ws.rs.GET
表示此方法响应一个HTTP GET请求。

@javax.ws.rs.POST
表示此方法响应一个HTTP POST请求。

@javax.ws.rs.PUT

通常用来更新数据。

@javax.ws.rs.DELETE

通常用来删除数据。
4.返回数据类型

@javax.ws.rs.Produces
设置Http返回报文,报文体的内容类型。
取值为 javax.ws.rs.core.MediaType.XXX。常用的有:

MediaType.APPLICATION_JSON
MediaType.TEXT_PLAIN

--------------------------------------------------------------------

补充:

@GET
@Path("/tokens")
public Response uploadFile(@QueryParam("appkey")String appkey,
@QueryParam("timestamp")Long timestamp,
@QueryParam("signature")String signature){
if (StringUtils.isEmpty(signature)||!appkeyCheck(appkey,pcsecretkey,timestamp).equals(signature)){
return Response.ok(com.sgm.epics.common.util.Response.newInstance().fail(HttpStatus.NO_CONTENT,"错误")).build();
}
return Response.ok(com.sgm.epics.common.util.Response.newInstance().fill(sgmFileService.getToken(appId))).build();
}






@GET
@Path("/load/{name}")
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response getPicture(@Context HttpServletRequest request,@PathParam("name") String name){
String appkey = request.getParameter("appkey");
String timestamp = request.getParameter("timestamp");
String signature = request.getParameter("signature");
String token = request.getParameter("token");
。。。。。。。。。。。。。。。
@Produces(MediaType.APPLICATION_JSON)


————————————————
原文链接:https://blog.csdn.net/chuchus/article/details/45008277

原文地址:https://www.cnblogs.com/yangsanluo/p/14893279.html