成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Spring 指南(構(gòu)建RESTful Web服務(wù))

yzzz / 1591人閱讀

摘要:構(gòu)建服務(wù)本指南將引導(dǎo)你完成使用創(chuàng)建服務(wù)的過程。接下來,你將創(chuàng)建將為這些問候語提供服務(wù)的資源控制器。告訴在包中查找其他組件配置和服務(wù),允許它找到控制器。顯示日志輸出,該服務(wù)應(yīng)在幾秒內(nèi)啟動(dòng)并運(yùn)行。

構(gòu)建RESTful Web服務(wù)

本指南將引導(dǎo)你完成使用Spring創(chuàng)建“hello world” RESTful Web服務(wù)的過程。

將要構(gòu)建什么

你將構(gòu)建一個(gè)接受HTTP GET請求的服務(wù):

http://localhost:8080/greeting

并使用JSON響應(yīng)表示問候語:

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

你可以使用查詢字符串中的可選name參數(shù)自定義問候語:

http://localhost:8080/greeting?name=User

name參數(shù)值將覆蓋默認(rèn)值“World”并反映在響應(yīng)中:

{"id":1,"content":"Hello, User!"}
需要什么

大約15分鐘

JDK 1.8或更高版本

Gradle 4+或Maven 3.2+

如何完成本指南

請執(zhí)行以下操作:

下載并解壓縮本指南的源存儲(chǔ)庫,或使用Git克隆它:

git clone https://github.com/spring-guides/gs-rest-service.git

進(jìn)入gs-rest-service/initial

完成后,你可以根據(jù)gs-rest-service/complete中的代碼檢查結(jié)果。

創(chuàng)建資源表示類

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

通過考慮服務(wù)交互來開始這個(gè)過程。

該服務(wù)將處理/greetingGET請求,可選地在查詢字符串中使用name參數(shù),GET請求應(yīng)返回200 OK響應(yīng),其中JSON位于表示問候語的正文中,它應(yīng)該看起來像這樣:

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

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

要為問候語表示建模,需要?jiǎng)?chuàng)建一個(gè)資源表示類,提供一個(gè)普通的java對(duì)象,其中包含idcontent數(shù)據(jù)的字段、構(gòu)造函數(shù)和訪問器:

src/main/java/hello/Greeting.java
package hello;

public class Greeting {

    private final long id;
    private final String content;

    public Greeting(long id, String content) {
        this.id = id;
        this.content = content;
    }

    public long getId() {
        return id;
    }

    public String getContent() {
        return content;
    }
}
正如你在下面的步驟中看到的那樣,Spring使用Jackson JSON庫自動(dòng)將Greeting類型的實(shí)例編組為JSON。

接下來,你將創(chuàng)建將為這些問候語提供服務(wù)的資源控制器。

創(chuàng)建資源控制器

在Spring構(gòu)建RESTful Web服務(wù)的方法中,HTTP請求由控制器處理,這些組件可以通過@RestController注解輕松被識(shí)別,下面的GreetingController通過返回Greeting類的新實(shí)例來處理/greetingGET請求:

src/main/java/hello/GreetingController.java
package hello;

import java.util.concurrent.atomic.AtomicLong;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@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è)控制器簡潔并簡單,但它的內(nèi)部有很多東西,讓我們一步一步地分解它。

@RequestMapping注解確保對(duì)/greeting的HTTP請求映射到greeting()方法。

上面的示例未指定GETPUT、POST等,因?yàn)?b>@RequestMapping默認(rèn)映射所有HTTP操作,使用@RequestMapping(method=GET)縮小此映射范圍。

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

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

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

此代碼使用Spring 4的新@RestController注解,它將類標(biāo)記為控制器,其中每個(gè)方法都返回一個(gè)域?qū)ο蠖皇且粋€(gè)視圖,這是@Controller@ResponseBody匯總在一起的簡寫。

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

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

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

src/main/java/hello/Application.java
package hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

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

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

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

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

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

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

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

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

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

如果你使用的是Gradle,則可以使用./gradlew bootRun運(yùn)行該應(yīng)用程序,或者你可以使用./gradlew build構(gòu)建JAR文件,然后你可以運(yùn)行JAR文件:

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

如果你使用的是Maven,則可以使用./mvnw spring-boot:run運(yùn)行該應(yīng)用程序,或者你可以使用./mvnw clean package構(gòu)建JAR文件,然后你可以運(yùn)行JAR文件:

java -jar target/gs-rest-service-0.1.0.jar
上面的過程將創(chuàng)建一個(gè)可運(yùn)行的JAR,你也可以選擇構(gòu)建經(jīng)典WAR文件。

顯示日志輸出,該服務(wù)應(yīng)在幾秒內(nèi)啟動(dòng)并運(yùn)行。

測試服務(wù)

現(xiàn)在服務(wù)已啟動(dòng),請?jiān)L問http://localhost:8080/greeting,你將看到:

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

使用http://localhost:8080/greeting?name=User提供name查詢字符串參數(shù),注意content屬性的值是如何從“Hello, World!”改變?yōu)椤?em>Hello, User!”:

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

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

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

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/73139.html

相關(guān)文章

  • Spring 指南(目錄)

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

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

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

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

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

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

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

    Airmusic 評(píng)論0 收藏0
  • Spring Boot 參考指南構(gòu)建系統(tǒng))

    摘要:構(gòu)建系統(tǒng)強(qiáng)烈建議你選擇一個(gè)支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到中心存儲(chǔ)庫的工件。例如,要升級(jí)到另一個(gè),你可以將以下元素添加到你的在前面的示例中,我們指定了一個(gè),但是任何依賴類型都可以以相同的方式被覆蓋。 13. 構(gòu)建系統(tǒng) 強(qiáng)烈建議你選擇一個(gè)支持依賴管理的構(gòu)建系統(tǒng),并且可以使用發(fā)布到Maven中心存儲(chǔ)庫的工件。我們建議你選擇Maven或Gradle,可以讓Spring Boot與其...

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

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

0條評(píng)論

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