成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

構(gòu)建入門Restful Web服務(wù)

ChristmasBoy / 3468人閱讀

摘要:創(chuàng)建資源類假設(shè)你已經(jīng)設(shè)置了項(xiàng)目和構(gòu)建系統(tǒng),你可以創(chuàng)建服務(wù)。該請(qǐng)求應(yīng)該返回在表示問(wèn)候的身體與響應(yīng)。創(chuàng)建資源控制器在構(gòu)建服務(wù)的方法中,請(qǐng)求由控制器處理。對(duì)象數(shù)據(jù)將作為直接寫(xiě)入響應(yīng)。該對(duì)象必須轉(zhuǎn)換為。

創(chuàng)建資源類

假設(shè)你已經(jīng)設(shè)置了項(xiàng)目和構(gòu)建系統(tǒng),你可以創(chuàng)建Web服務(wù)。

通過(guò)考慮服務(wù)交互來(lái)開(kāi)始這個(gè)過(guò)程。

該服務(wù)將處理GET請(qǐng)求/greeting,可選地使用name查詢字符串中的參數(shù)。該GET請(qǐng)求應(yīng)該返回200 OK在表示問(wèn)候的身體與JSON響應(yīng)。它應(yīng)該看起來(lái)像這樣:

{
    "id": 1,
    "content": "Hello, World!"
}

該id字段是問(wèn)候語(yǔ)的唯一標(biāo)識(shí)符,是問(wèn)候語(yǔ)content的文本表示。

要為問(wèn)候語(yǔ)表示建模,請(qǐng)創(chuàng)建資源表示形式類。提供一個(gè)普通的舊java對(duì)象,其中包含id和content數(shù)據(jù)的字段,構(gòu)造函數(shù)和訪問(wèn)器:

@Data
@AllArgsConstructor
public class Greeting {

    private final long id;
    private final String content;

}
正如你在下面的步驟中看到的,Spring使用Jackson JSON庫(kù)自動(dòng)將類型實(shí)例Greeting封送到JSON中。
創(chuàng)建資源控制器

在Spring構(gòu)建RESTful Web服務(wù)的方法中,HTTP請(qǐng)求由控制器處理。這些組件很容易通過(guò)@RestController注釋來(lái)識(shí)別,GreetingController下面通過(guò)返回類的新實(shí)例來(lái)處理GET請(qǐng)求:

@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));
    }

}

這個(gè)控制器簡(jiǎn)潔而簡(jiǎn)單,但引擎下有很多東西,讓我們一步一步地分解它。

所述@RequestMapping注釋可以確保HTTP請(qǐng)求/greeting被映射到greeting()方法。

上面的示例未指定GETvs. PUT,POST等等,因?yàn)锧RequestMapping默認(rèn)情況下映射所有HTTP操作。使用@RequestMapping(method=GET)縮小這種映射。

@RequestParam將查詢字符串參數(shù)的值綁定name到方法的name參數(shù)中g(shù)reeting()。如果name請(qǐng)求中不存在該參數(shù),defaultValue則使用“World”。

方法體的實(shí)現(xiàn)基于來(lái)自的下一個(gè)值創(chuàng)建并返回Greeting具有id和content屬性的新對(duì)象,并使用問(wèn)候counter格式化給定name的格式template。

傳統(tǒng)MVC控制器和上面的RESTful Web服務(wù)控制器之間的關(guān)鍵區(qū)別在于創(chuàng)建HTTP響應(yīng)主體的方式。這個(gè)RESTful Web服務(wù)控制器只是填充并返回一個(gè)對(duì)象,而不是依靠視圖技術(shù)來(lái)執(zhí)行將問(wèn)候數(shù)據(jù)的服務(wù)器端呈現(xiàn)為HTML Greeting。對(duì)象數(shù)據(jù)將作為JSON直接寫(xiě)入HTTP響應(yīng)。

此代碼使用Spring 4的新@RestController注釋,它將類標(biāo)記為控制器,其中每個(gè)方法都返回一個(gè)域?qū)ο蠖皇且晥D。它是速記@Controller和@ResponseBody拼湊在一起的。

該Greeting對(duì)象必須轉(zhuǎn)換為JSON。由于Spring的HTTP消息轉(zhuǎn)換器支持,您無(wú)需手動(dòng)執(zhí)行此轉(zhuǎn)換。因?yàn)镴ackson 2在類路徑上,所以MappingJackson2HttpMessageConverter會(huì)自動(dòng)選擇Spring 來(lái)將Greeting實(shí)例轉(zhuǎn)換為JSON。

使應(yīng)用程序可執(zhí)行

雖然可以將此服務(wù)打包為傳統(tǒng)的WAR文件以部署到外部應(yīng)用程序服務(wù)器,但下面演示的更簡(jiǎn)單的方法創(chuàng)建了一個(gè)獨(dú)立的應(yīng)用程序。您將所有內(nèi)容打包在一個(gè)可執(zhí)行的JAR文件中,由一個(gè)好的舊Java main()方法驅(qū)動(dòng)。在此過(guò)程中,您使用Spring的支持將Tomcat servlet容器嵌入為HTTP運(yùn)行時(shí),而不是部署到外部實(shí)例。

@SpringBootApplication
public class RestfulWebApplication {

    public static void main(String[] args) {
        SpringApplication.run(RestfulWebApplication.class, args);
    }
}

@SpringBootApplication 是一個(gè)便利注釋,添加了以下所有內(nèi)容:

@Configuration 標(biāo)記該類作為應(yīng)用程序上下文的bean定義的源。

@EnableAutoConfiguration 告訴Spring Boot開(kāi)始根據(jù)類路徑設(shè)置,其他bean和各種屬性設(shè)置添加bean。

通常你會(huì)添加@EnableWebMvc一個(gè)Spring MVC應(yīng)用程序,但Spring Boot會(huì)在類路徑上看到spring-webmvc時(shí)自動(dòng)添加它。這會(huì)將應(yīng)用程序標(biāo)記為Web應(yīng)用程序并激活關(guān)鍵行為,例如設(shè)置a DispatcherServlet.

@ComponentScan告訴Spring在包中尋找其他組件,配置和服務(wù)hello,允許它找到控制器。

該main()方法使用Spring Boot的SpringApplication.run()方法來(lái)啟動(dòng)應(yīng)用程序。您是否注意到?jīng)]有一行XML?也沒(méi)有web.xml文件。此Web應(yīng)用程序是100%純Java,您無(wú)需處理配置任何管道或基礎(chǔ)結(jié)構(gòu)。

構(gòu)建可執(zhí)行的JAR

您可以使用Gradle或Maven從命令行運(yùn)行該應(yīng)用程序。或者,您可以構(gòu)建一個(gè)包含所有必需依賴項(xiàng),類和資源的可執(zhí)行JAR文件,并運(yùn)行該文件。這使得在整個(gè)開(kāi)發(fā)生命周期中,跨不同環(huán)境等將服務(wù)作為應(yīng)用程序發(fā)布,版本和部署變得容易。

如果您使用的是Gradle,則可以使用運(yùn)行該應(yīng)用程序./gradlew bootRun?;蛘吣梢允褂脴?gòu)建JAR文件./gradlew build。然后你可以運(yùn)行JAR文件:

java -jar build / libs / gs-rest-service-0.1.0.jar

如果您使用的是Maven,則可以使用該應(yīng)用程序運(yùn)行該應(yīng)用程序./mvnw spring-boot:run?;蛘吣梢允褂脴?gòu)建JAR文件./mvnw clean package。然后你可以運(yùn)行JAR文件:

java -jar target / gs-rest-service-0.1.0.jar
測(cè)試服務(wù)

現(xiàn)在該服務(wù)已啟動(dòng),請(qǐng)?jiān)L問(wèn)http:// localhost:8080 / greeting,其中顯示:

{"id":1,"content":"Hello, World!"}

name使用http:// localhost:8080 / greeting?name = User提供查詢字符串參數(shù)。注意content屬性的值如何從“Hello,World!”改變?!澳愫?,用戶!”:

{"id":2,"content":"Hello, User!"}

此更改表明該@RequestParam安排GreetingController正在按預(yù)期工作。該name參數(shù)已被賦予默認(rèn)值“World”,但始終可以通過(guò)查詢字符串顯式覆蓋。

另請(qǐng)注意id屬性如何從更改1為2。這證明您正在GreetingController跨多個(gè)請(qǐng)求針對(duì)同一實(shí)例工作,并且其counter字段在每次調(diào)用時(shí)按預(yù)期遞增。

結(jié)尾

恭喜!您剛剛使用Spring開(kāi)發(fā)了RESTful Web服務(wù)。

GitHub:Restful-Web

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72315.html

相關(guān)文章

  • Spring 指南(目錄)

    摘要:指南無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率使用團(tuán)隊(duì)推薦的最新項(xiàng)目版本和技術(shù)。使用進(jìn)行消息傳遞了解如何將用作消息代理。安全架構(gòu)的主題指南,這些位如何組合以及它們?nèi)绾闻c交互。使用的主題指南以及如何為應(yīng)用程序創(chuàng)建容器鏡像。 Spring 指南 無(wú)論你正在構(gòu)建什么,這些指南都旨在讓你盡快提高工作效率 — 使用Spring團(tuán)隊(duì)推薦的最新Spring項(xiàng)目版本和技術(shù)。 入門指南 這些...

    only_do 評(píng)論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    Jeffrrey 評(píng)論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    sf190404 評(píng)論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥(niǎo)教程框架中文手冊(cè)入門目標(biāo)使用搭建通過(guò)對(duì)數(shù)據(jù)增刪查改沒(méi)了純粹占行用的拜 后端API入門學(xué)習(xí)指北 了解一下一下概念. RESTful API標(biāo)準(zhǔn)] 所有的API都遵循[RESTful API標(biāo)準(zhǔn)]. 建議大家都簡(jiǎn)單了解一下HTTP協(xié)議和RESTful API相關(guān)資料. 阮一峰:理解RESTful架構(gòu) 阮一峰:RESTful API 設(shè)計(jì)指南 RESTful API指南 依賴注入 D...

    Airmusic 評(píng)論0 收藏0
  • PHP相關(guān)

    摘要:的機(jī)器學(xué)習(xí)庫(kù)的機(jī)器學(xué)習(xí)庫(kù),包括算法交叉驗(yàn)證神經(jīng)網(wǎng)絡(luò)等內(nèi)容。在即將到來(lái)的大會(huì)上,她將和大家分享在機(jī)器學(xué)習(xí)領(lǐng)域的全新可能。入門總結(jié)入門相關(guān),如安裝配置基本使用等。 基于 Swoole 開(kāi)發(fā) PHP 擴(kuò)展 Swoole-1.9.7 增加了一個(gè)新特性,可以基于 Swoole 使用 C++ 語(yǔ)言開(kāi)發(fā)擴(kuò)展模塊,在擴(kuò)展模塊中可以注冊(cè) PHP 內(nèi)置函數(shù)和類?,F(xiàn)在可以基于 Swoole 來(lái)編寫(xiě) PHP ...

    lewinlee 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<