摘要:創建資源類假設你已經設置了項目和構建系統,你可以創建服務。該請求應該返回在表示問候的身體與響應。創建資源控制器在構建服務的方法中,請求由控制器處理。對象數據將作為直接寫入響應。該對象必須轉換為。
創建資源類
假設你已經設置了項目和構建系統,你可以創建Web服務。
通過考慮服務交互來開始這個過程。
該服務將處理GET請求/greeting,可選地使用name查詢字符串中的參數。該GET請求應該返回200 OK在表示問候的身體與JSON響應。它應該看起來像這樣:
{ "id": 1, "content": "Hello, World!" }
該id字段是問候語的唯一標識符,是問候語content的文本表示。
要為問候語表示建模,請創建資源表示形式類。提供一個普通的舊java對象,其中包含id和content數據的字段,構造函數和訪問器:
@Data @AllArgsConstructor public class Greeting { private final long id; private final String content; }
正如你在下面的步驟中看到的,Spring使用Jackson JSON庫自動將類型實例Greeting封送到JSON中。創建資源控制器
在Spring構建RESTful Web服務的方法中,HTTP請求由控制器處理。這些組件很容易通過@RestController注釋來識別,GreetingController下面通過返回類的新實例來處理GET請求:
@RestController public class GreetingController { private static final String template = "Hello,%s!"; private final AtomicLong counter = new AtomicLong(); @RequestMapping("/greeting") public Greeting greeting(@RequestParam(value = "name", defaultValue = "World") String name){ return new Greeting(counter.incrementAndGet(),String.format(template,name)); } }
這個控制器簡潔而簡單,但引擎下有很多東西,讓我們一步一步地分解它。
所述@RequestMapping注釋可以確保HTTP請求/greeting被映射到greeting()方法。
上面的示例未指定GETvs. PUT,POST等等,因為@RequestMapping默認情況下映射所有HTTP操作。使用@RequestMapping(method=GET)縮小這種映射。
@RequestParam將查詢字符串參數的值綁定name到方法的name參數中greeting()。如果name請求中不存在該參數,defaultValue則使用“World”。
方法體的實現基于來自的下一個值創建并返回Greeting具有id和content屬性的新對象,并使用問候counter格式化給定name的格式template。
傳統MVC控制器和上面的RESTful Web服務控制器之間的關鍵區別在于創建HTTP響應主體的方式。這個RESTful Web服務控制器只是填充并返回一個對象,而不是依靠視圖技術來執行將問候數據的服務器端呈現為HTML Greeting。對象數據將作為JSON直接寫入HTTP響應。
此代碼使用Spring 4的新@RestController注釋,它將類標記為控制器,其中每個方法都返回一個域對象而不是視圖。它是速記@Controller和@ResponseBody拼湊在一起的。
該Greeting對象必須轉換為JSON。由于Spring的HTTP消息轉換器支持,您無需手動執行此轉換。因為Jackson 2在類路徑上,所以MappingJackson2HttpMessageConverter會自動選擇Spring 來將Greeting實例轉換為JSON。
使應用程序可執行雖然可以將此服務打包為傳統的WAR文件以部署到外部應用程序服務器,但下面演示的更簡單的方法創建了一個獨立的應用程序。您將所有內容打包在一個可執行的JAR文件中,由一個好的舊Java main()方法驅動。在此過程中,您使用Spring的支持將Tomcat servlet容器嵌入為HTTP運行時,而不是部署到外部實例。
@SpringBootApplication public class RestfulWebApplication { public static void main(String[] args) { SpringApplication.run(RestfulWebApplication.class, args); } }
@SpringBootApplication 是一個便利注釋,添加了以下所有內容:
@Configuration 標記該類作為應用程序上下文的bean定義的源。
@EnableAutoConfiguration 告訴Spring Boot開始根據類路徑設置,其他bean和各種屬性設置添加bean。
通常你會添加@EnableWebMvc一個Spring MVC應用程序,但Spring Boot會在類路徑上看到spring-webmvc時自動添加它。這會將應用程序標記為Web應用程序并激活關鍵行為,例如設置a DispatcherServlet.
@ComponentScan告訴Spring在包中尋找其他組件,配置和服務hello,允許它找到控制器。
該main()方法使用Spring Boot的SpringApplication.run()方法來啟動應用程序。您是否注意到沒有一行XML?也沒有web.xml文件。此Web應用程序是100%純Java,您無需處理配置任何管道或基礎結構。
構建可執行的JAR您可以使用Gradle或Maven從命令行運行該應用程序。或者,您可以構建一個包含所有必需依賴項,類和資源的可執行JAR文件,并運行該文件。這使得在整個開發生命周期中,跨不同環境等將服務作為應用程序發布,版本和部署變得容易。
如果您使用的是Gradle,則可以使用運行該應用程序./gradlew bootRun。或者您可以使用構建JAR文件./gradlew build。然后你可以運行JAR文件:
java -jar build / libs / gs-rest-service-0.1.0.jar
如果您使用的是Maven,則可以使用該應用程序運行該應用程序./mvnw spring-boot:run。或者您可以使用構建JAR文件./mvnw clean package。然后你可以運行JAR文件:
java -jar target / gs-rest-service-0.1.0.jar測試服務
現在該服務已啟動,請訪問http:// localhost:8080 / greeting,其中顯示:
{"id":1,"content":"Hello, World!"}
name使用http:// localhost:8080 / greeting?name = User提供查詢字符串參數。注意content屬性的值如何從“Hello,World!”改變。“你好,用戶!”:
{"id":2,"content":"Hello, User!"}
此更改表明該@RequestParam安排GreetingController正在按預期工作。該name參數已被賦予默認值“World”,但始終可以通過查詢字符串顯式覆蓋。
另請注意id屬性如何從更改1為2。這證明您正在GreetingController跨多個請求針對同一實例工作,并且其counter字段在每次調用時按預期遞增。
結尾恭喜!您剛剛使用Spring開發了RESTful Web服務。
GitHub:Restful-Web
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/72315.html
摘要:指南無論你正在構建什么,這些指南都旨在讓你盡快提高工作效率使用團隊推薦的最新項目版本和技術。使用進行消息傳遞了解如何將用作消息代理。安全架構的主題指南,這些位如何組合以及它們如何與交互。使用的主題指南以及如何為應用程序創建容器鏡像。 Spring 指南 無論你正在構建什么,這些指南都旨在讓你盡快提高工作效率 — 使用Spring團隊推薦的最新Spring項目版本和技術。 入門指南 這些...
摘要:菜鳥教程框架中文手冊入門目標使用搭建通過對數據增刪查改沒了純粹占行用的拜 后端API入門學習指北 了解一下一下概念. RESTful API標準] 所有的API都遵循[RESTful API標準]. 建議大家都簡單了解一下HTTP協議和RESTful API相關資料. 阮一峰:理解RESTful架構 阮一峰:RESTful API 設計指南 RESTful API指南 依賴注入 D...
摘要:菜鳥教程框架中文手冊入門目標使用搭建通過對數據增刪查改沒了純粹占行用的拜 后端API入門學習指北 了解一下一下概念. RESTful API標準] 所有的API都遵循[RESTful API標準]. 建議大家都簡單了解一下HTTP協議和RESTful API相關資料. 阮一峰:理解RESTful架構 阮一峰:RESTful API 設計指南 RESTful API指南 依賴注入 D...
摘要:菜鳥教程框架中文手冊入門目標使用搭建通過對數據增刪查改沒了純粹占行用的拜 后端API入門學習指北 了解一下一下概念. RESTful API標準] 所有的API都遵循[RESTful API標準]. 建議大家都簡單了解一下HTTP協議和RESTful API相關資料. 阮一峰:理解RESTful架構 阮一峰:RESTful API 設計指南 RESTful API指南 依賴注入 D...
閱讀 2166·2021-09-04 16:40
閱讀 1460·2021-08-13 15:07
閱讀 3608·2019-08-30 15:53
閱讀 3198·2019-08-30 13:11
閱讀 1075·2019-08-29 17:22
閱讀 1815·2019-08-29 12:47
閱讀 1478·2019-08-29 11:27
閱讀 2229·2019-08-26 18:42