摘要:是的開源項目之一,是一個框架。趁今天有空,學習一下。看了兩篇博客后,自己寫了一個。如果不配置,也可以手動指定,見注釋掉的部分。
RESTEasy是JBoss的開源項目之一,是一個RESTful Web Services框架。
趁今天有空,學習一下RESTEasy。看了兩篇博客后,自己寫了一個demo。
1. 新建一個maven的web項目。
依賴如下:
2. 接著創建兩個服務,messageservice和userservice:4.0.0 com.fengyuan RESTEasyDemo war 0.0.1-SNAPSHOT RESTEasyDemo Maven Webapp http://maven.apache.org junit junit 4.4 test org.projectlombok lombok 1.14.4 org.jboss.resteasy resteasy-jaxrs 2.2.3.GA org.jboss.resteasy resteasy-jackson-provider 2.2.3.GA org.apache.maven.plugins maven-compiler-plugin 1.7 UTF-8
UserService.java:
package com.fengyuan.restapi; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import com.fengyuan.domain.User; @Path("userservice") // 服務路徑 public class UserService { /** * 初始化三個用戶數據,存入map中,key為用戶id,value為用戶對象 */ static MapuserMap = new HashMap<>(); static { User user1 = new User("Lee", 24, "138***"); userMap.put(1, user1); User user2 = new User("Cathy", 25, "188***"); userMap.put(2, user2); User user3 = new User("Aaron", 26, "186***"); userMap.put(3, user3); } /** * 獲取指定id的用戶 * * @param id * @return */ @GET @Path("user/{id}") // 具體服務的路徑, id是入參 @Produces("application/json") // 返回的格式 public User getById(@PathParam("id") Integer id) { return (User) userMap.get(id); } /** * 以json格式返回所有用戶 * * @return */ @GET @Path("users") @Produces("application/json") public List getUsers() { List userList = new ArrayList (); for (Entry user : userMap.entrySet()) { userList.add(user.getValue()); } return userList; } }
MessageService.java:
package com.fengyuan.restapi; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.core.Response; @Path("/messageservice") public class MessageService { public MessageService(){} @GET @Path("/{param}") public Response printMessage(@PathParam("param") String msg) { String result = "Hello : " + msg; return Response.status(200).entity(result).build(); } }
User.java:
package com.fengyuan.domain; import lombok.AllArgsConstructor; import lombok.Data; public @Data @AllArgsConstructor class User { private String name; private int age; private String tel; }3. 配置web.xml:
Restful Web Application resteasy.scan true resteasy.servlet.mapping.prefix /rest org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap resteasy-servlet org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher resteasy-servlet /rest/*
配置resteasy.scan為true表示自動掃描服務。如果不配置,也可以手動指定resteasy.resources,見注釋掉的部分。
4. 啟動tomcat,在瀏覽器輸入服務的url: 5. 除了可以在瀏覽器直接訪問之外,也可以用代碼調用:package com.fengyuan.test; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; import junit.framework.TestCase; public class TestUserAPI extends TestCase { public static final String USER_API = "http://127.0.0.1:8080/resteasy-demo/rest/userservice/users"; public void testCreateUserAndGetUser() throws IOException { URL url = new URL(USER_API); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); connection.setConnectTimeout(1000); byte[] bytes = new byte[1024]; //讀取請求返回值 InputStream inStream=connection.getInputStream(); inStream.read(bytes, 0, inStream.available()); System.out.println(new String(bytes, "utf-8")); connection.disconnect(); } }
控制臺輸出:
[{"name":"Lee","tel":"138***","age":24},{"name":"Cathy","tel":"188***","age":25},{"name":"Aaron","tel":"186***","age":26}]
當然,這里只是簡單了測試了GET類型的服務,還有POST等類型的服務等有空了再補充。
另外,我在寫這個demo項目的時候,發現如果使用了2.1.多版本的resteasy-jackson-provider和resteasy-jaxrs包,并且在web.xml中配置了resteasy.scan為true的話,會出一些問題,這邊提醒一下,讓看這篇博文的同學不用再踩進這個坑~。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66213.html
摘要:如果是其它方式引發的錯誤,此處的解決方法不可用。最與該錯誤重要便是前兩個。仔細檢查發現,在接口中將參數轉化為一個對象,但沒有指出該對象就是錯誤代碼根據查詢條件查詢登錄注冊訪問統計數據解決辦法接口中添加相應的注解。 1. object is not an instance of declaring class 錯誤日日志 2016-06-01 10:55:59,612 [RMI TCP...
摘要:此類問題,在配置中,做的比較好,所以,官方也不是很放心其注解,建議使用。錯誤的引起,是和引起的,原因給的是字符串,卻拿一個數字比較,會做一些轉化,結果在數字格式化時發生異常。 使用mybatis注解開發的時候,總會遇到很多問題,但是mybatis的注解并不是那么的美好,一些問題或者錯誤根本不能給出準確的定位,有時候,甚至會給出Unknow Source的錯誤,獲取就是一個關閉標簽沒有關...
摘要:第二集非必選持續集成編譯打包部署到線上環境集成前言在持續集成第一集中講解了關于如果編譯,打包,發布包到私服。在下面一集中,也就是第二集中,開始講解如何持續集成可運行的服務包到測試和正式環境。 第二集 hudson+gradle+git+maven(非必選)持續集成編譯,打包,部署到線上環境集成 前言 在持續集成第一集中,講解了關于如果編譯,打包,發布jar包到maven私服。在下面一集...
摘要:這個過程是瀏覽器會發一次請求,詢問服務器是否允許代碼如下完了以后,客戶端就可以順利請求服務器接口了。 此文講解在RESTful API中跨域問題在項目中如何處理的! CORS 是 Cross Origin Resource Sharing 的縮寫, 定義了瀏覽器和服務器間共享內容的新方式,通過它瀏覽器和服務器可以安全地進行跨域訪問,它是 JSONP 的現代繼任 者。服務器上的 COR...
摘要:當提供程序線程池耗盡時,不能發送到使用者端。一些錯誤修正動態配置不能刪除,支持參數,監控統計問題等新功能支持手冊線程池耗盡時自動堆棧轉儲。在注冊表無法連接時被阻止。正常關機,在注冊表取消注冊和線程池關閉之間增加額外的等待時間。 dubbo分析showImg(https://segmentfault.com/img/bVbam2f?w=1726&h=686); dubbo為什么要對接sp...
閱讀 2179·2021-11-25 09:43
閱讀 2261·2021-11-24 09:39
閱讀 1555·2021-11-22 12:02
閱讀 2992·2021-11-17 09:33
閱讀 3418·2021-11-15 11:38
閱讀 2744·2021-10-13 09:40
閱讀 1075·2021-09-22 15:41
閱讀 1693·2019-08-30 10:58