1、在maven配置文件中需要添加如下信息
<!-- spring-boot-starter-jersey --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jersey</artifactId> </dependency>
2、實現ResourceConfig類對指定的包進行掃描注冊指定的接口。並將該實現類注冊到SpringBoot容器中。
package com.kingdee.config; import javax.ws.rs.ApplicationPath; import org.glassfish.jersey.server.ResourceConfig; import org.springframework.stereotype.Component; import com.kingdee.filter.MyContainerRequestFilter; import com.kingdee.filter.MyContainerResponseFilter; @Component @ApplicationPath("/microblog") public class MicroblogResourceConfig extends ResourceConfig{ public MicroblogResourceConfig() { System.out.println("000000000000000000000"); packages("com.kingdee.controller.rest"); register(MyContainerRequestFilter.class); register(MyContainerResponseFilter.class); } }
3、設置接口
package com.kingdee.controller.rest; import java.awt.List; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.util.Date; import java.util.LinkedList; import javax.jws.soap.SOAPBinding.Use; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.websocket.server.PathParam; import javax.ws.rs.BeanParam; import javax.ws.rs.Consumes; import javax.ws.rs.CookieParam; import javax.ws.rs.DefaultValue; import javax.ws.rs.FormParam; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.HttpHeaders; import org.apache.coyote.http11.filters.BufferedInputFilter; import org.springframework.boot.autoconfigure.security.SecurityProperties.Headers; import org.springframework.stereotype.Component; import com.kingdee.annotation.MyBindingFilter; import com.kingdee.entity.User; import com.sun.research.ws.wadl.Request; @Component @Path("api") public class MicroblogController { /** * @QueryParam為主要通過鍵值對取參數值 * @param request * @param id * @param name * @param gender * @return */ @GET//以GET的方式進行接口調用 @Path("find")//接口路徑 @Produces("applications/json") public Object publicMicroblog(@Context HttpServletRequest request, @QueryParam("id") @DefaultValue("") String id,//主要通過鍵值對這樣取 @QueryParam("name") @DefaultValue("") String name, @QueryParam("gender") @DefaultValue("0") int gender){ User user = new User(); user.setName(name); user.setId(id); user.setGender(gender); System.out.println("GET=============="+user.getName()); return user; } @POST//以POST的方式進行接口構建 @Path("update")//接口路徑 @Produces("application/json") public Object updateMicroblog(@Context HttpServletRequest request, @QueryParam("id") @DefaultValue("") String id, @QueryParam("name") @DefaultValue("") String name, @QueryParam("gender") @DefaultValue("0") int gender){ User user = new User(); user.setName(name); user.setId(id); user.setGender(gender); System.out.println("POST=================="+user.getName()); return user; } /** * @PathParam將參數作為接口路徑的一部分進行組合 */ @Path("comment/{name}") @POST @Produces("application/json") public Object commentByName(@PathParam("name") String name, @QueryParam("id") String id,@QueryParam("gender") int gender){ User user = new User(); user.setName(name); user.setId(id); user.setGender(gender); System.out.println("@PathParam=================="+user.getName()); return user; } /** * @FormParam將以表單的形式傳遞參數 */ @Path("commentupdate") @POST @Produces("application/json") public Object updateComment(@FormParam("name") String name, @FormParam("id") String id,@FormParam("gender") int gender){ User user = new User(); user.setName(name); user.setId(id); user.setGender(gender); System.out.println("@FormParam=================="+user.getName()); return user; } /** * @BeanParam將自定義一個參數組合實例 */ @Path("savecomment") @POST @Produces("application/json") public Object saveComment(@BeanParam User user){ System.out.println("@BeanParam=================="+user.getName()); return user; } /** * @CookieParam匹配cookie中的鍵值對 */ @Path("findcomments") @POST @Produces("application/json") public LinkedList<User> findComments(@CookieParam("name") String name, @CookieParam("id") String id){ User user = new User(); user.setId(id); user.setName(name); System.out.println("@CookieParam=================="+user.getName()); LinkedList<User> list = new LinkedList<User>(); list.add(user); return list; } /** * @Context注解來獲取上下文參數(ServletContext,ServletRequest,ServletResponse),獲取請求頭信息,獲取請求處理信息, */ @Path("savemicroblog") @POST @Produces("application/json") public void saveMicroblog(@Context HttpServletRequest request, @Context HttpHeaders headers,@Context ServletContext ctx, @Context Request request2){ String name = (String) request.getAttribute("name"); System.out.println("@Context========httpservletrequest=========="+name); System.out.println("@Context========headers=========="+headers.getHeaderString("token")); System.out.println("@Context========servletcontext=========="+ctx); System.out.println("@Context========request=========="+request2); } /** * 傳入文件類型 * @throws IOException */ @Path("uploadfile") @POST public void uploadfile(File file) throws IOException{ try(BufferedReader br = new BufferedReader(new FileReader(file))){ String s; do { s = br.readLine(); System.out.println("========file=========="+s); } while (s != null); } } /** * 參數為InputStream類型 * @throws IOException */ @Path("input") @POST public void inputfile(InputStream inputStream) throws IOException{ try(BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))){ String s; do { s = br.readLine(); System.out.println("========inputStream=========="+s); } while (s != null); } } /** * 參數為reader類型 * @throws IOException */ @Path("reader") @POST public void readerfile(Reader reader) throws IOException{ try(BufferedReader br = new BufferedReader(reader)){ String s; do { s = br.readLine(); System.out.println("========inputStream=========="+s); } while (s != null); } } /** * @Consumes將參數以一定的格式進行接收 * @Produces將結果以一定的格式進行輸出 */ @MyBindingFilter @Path("json") @POST @Consumes("application/json") @Produces("application/json") public User findMicroblogByName(User user){ User user1 = new User(); user1.setName(user.getName()); user1.setOrgLongName(user.getOrgLongName()); System.out.println("===========json========="+user.getName()); return user; } }