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

資訊專欄INFORMATION COLUMN

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

yzzz / 1561人閱讀

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

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

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

將要構(gòu)建什么

你將構(gòu)建一個接受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í)行以下操作:

下載并解壓縮本指南的源存儲庫,或使用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è)置了項目和構(gòu)建系統(tǒng),你可以創(chuàng)建Web服務(wù)。

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

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

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

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

要為問候語表示建模,需要創(chuàng)建一個資源表示類,提供一個普通的java對象,其中包含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庫自動將Greeting類型的實例編組為JSON。

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

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

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

這個控制器簡潔并簡單,但它的內(nèi)部有很多東西,讓我們一步一步地分解它。

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

上面的示例未指定GETPUTPOST等,因為@RequestMapping默認(rèn)映射所有HTTP操作,使用@RequestMapping(method=GET)縮小此映射范圍。

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

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

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

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

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

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

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

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是一個方便的注解,添加了以下所有內(nèi)容:

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

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

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

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

main()方法使用Spring Boot的SpringApplication.run()方法來啟動應(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)建一個包含所有必需依賴項、類和資源的可執(zhí)行JAR文件,并運(yùn)行它,這使得在整個開發(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)建一個可運(yùn)行的JAR,你也可以選擇構(gòu)建經(jīng)典WAR文件。

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

測試服務(wù)

現(xiàn)在服務(wù)已啟動,請訪問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,這證明你正在針對相同的GreetingController實例跨多個請求,并且其counter字段在每次調(diào)用時按預(yù)期遞增。

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

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

相關(guān)文章

  • Spring 指南(目錄)

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

    only_do 評論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(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è)計指南 RESTful API指南 依賴注入 D...

    Jeffrrey 評論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(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è)計指南 RESTful API指南 依賴注入 D...

    sf190404 評論0 收藏0
  • 后端API從入門到放棄指北

    摘要:菜鳥教程框架中文手冊入門目標(biāo)使用搭建通過對數(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è)計指南 RESTful API指南 依賴注入 D...

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

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

    thursday 評論0 收藏0

發(fā)表評論

0條評論

yzzz

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<