摘要:是的開源項(xiàng)目之一,是一個框架。趁今天有空,學(xué)習(xí)一下。看了兩篇博客后,自己寫了一個。如果不配置,也可以手動指定,見注釋掉的部分。
RESTEasy是JBoss的開源項(xiàng)目之一,是一個RESTful Web Services框架。
趁今天有空,學(xué)習(xí)一下RESTEasy。看了兩篇博客后,自己寫了一個demo。
1. 新建一個maven的web項(xiàng)目。
依賴如下:
2. 接著創(chuàng)建兩個服務(wù),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") // 服務(wù)路徑 public class UserService { /** * 初始化三個用戶數(shù)據(jù),存入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}") // 具體服務(wù)的路徑, id是入?yún)? @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表示自動掃描服務(wù)。如果不配置,也可以手動指定resteasy.resources,見注釋掉的部分。
4. 啟動tomcat,在瀏覽器輸入服務(wù)的url: 5. 除了可以在瀏覽器直接訪問之外,也可以用代碼調(diào)用: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}]
當(dāng)然,這里只是簡單了測試了GET類型的服務(wù),還有POST等類型的服務(wù)等有空了再補(bǔ)充。
另外,我在寫這個demo項(xiàng)目的時候,發(fā)現(xiàn)如果使用了2.1.多版本的resteasy-jackson-provider和resteasy-jaxrs包,并且在web.xml中配置了resteasy.scan為true的話,會出一些問題,這邊提醒一下,讓看這篇博文的同學(xué)不用再踩進(jìn)這個坑~。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/66213.html
摘要:如果是其它方式引發(fā)的錯誤,此處的解決方法不可用。最與該錯誤重要便是前兩個。仔細(xì)檢查發(fā)現(xiàn),在接口中將參數(shù)轉(zhuǎn)化為一個對象,但沒有指出該對象就是錯誤代碼根據(jù)查詢條件查詢登錄注冊訪問統(tǒng)計(jì)數(shù)據(jù)解決辦法接口中添加相應(yīng)的注解。 1. object is not an instance of declaring class 錯誤日日志 2016-06-01 10:55:59,612 [RMI TCP...
摘要:此類問題,在配置中,做的比較好,所以,官方也不是很放心其注解,建議使用。錯誤的引起,是和引起的,原因給的是字符串,卻拿一個數(shù)字比較,會做一些轉(zhuǎn)化,結(jié)果在數(shù)字格式化時發(fā)生異常。 使用mybatis注解開發(fā)的時候,總會遇到很多問題,但是mybatis的注解并不是那么的美好,一些問題或者錯誤根本不能給出準(zhǔn)確的定位,有時候,甚至?xí)o出Unknow Source的錯誤,獲取就是一個關(guān)閉標(biāo)簽沒有關(guān)...
摘要:第二集非必選持續(xù)集成編譯打包部署到線上環(huán)境集成前言在持續(xù)集成第一集中講解了關(guān)于如果編譯,打包,發(fā)布包到私服。在下面一集中,也就是第二集中,開始講解如何持續(xù)集成可運(yùn)行的服務(wù)包到測試和正式環(huán)境。 第二集 hudson+gradle+git+maven(非必選)持續(xù)集成編譯,打包,部署到線上環(huán)境集成 前言 在持續(xù)集成第一集中,講解了關(guān)于如果編譯,打包,發(fā)布jar包到maven私服。在下面一集...
摘要:這個過程是瀏覽器會發(fā)一次請求,詢問服務(wù)器是否允許代碼如下完了以后,客戶端就可以順利請求服務(wù)器接口了。 此文講解在RESTful API中跨域問題在項(xiàng)目中如何處理的! CORS 是 Cross Origin Resource Sharing 的縮寫, 定義了瀏覽器和服務(wù)器間共享內(nèi)容的新方式,通過它瀏覽器和服務(wù)器可以安全地進(jìn)行跨域訪問,它是 JSONP 的現(xiàn)代繼任 者。服務(wù)器上的 COR...
摘要:當(dāng)提供程序線程池耗盡時,不能發(fā)送到使用者端。一些錯誤修正動態(tài)配置不能刪除,支持參數(shù),監(jiān)控統(tǒng)計(jì)問題等新功能支持手冊線程池耗盡時自動堆棧轉(zhuǎn)儲。在注冊表無法連接時被阻止。正常關(guān)機(jī),在注冊表取消注冊和線程池關(guān)閉之間增加額外的等待時間。 dubbo分析showImg(https://segmentfault.com/img/bVbam2f?w=1726&h=686); dubbo為什么要對接sp...
閱讀 2170·2021-11-25 09:43
閱讀 2249·2021-11-24 09:39
閱讀 1540·2021-11-22 12:02
閱讀 2984·2021-11-17 09:33
閱讀 3408·2021-11-15 11:38
閱讀 2718·2021-10-13 09:40
閱讀 1065·2021-09-22 15:41
閱讀 1687·2019-08-30 10:58