第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

首頁 慕課教程 Spring Boot 入門教程 Spring Boot 入門教程 Spring Boot開發(fā)RESTful 風格項目

Spring Boot 開發(fā) RESTful 風格 Web 項目

1. 前言

很多研發(fā)團隊,可能都會有一個體會,當多人研發(fā)一個項目時,并不能達到 1+1>2 的效果。有時候還會出現(xiàn) 1+1<1 ,即 2 個人還不如 1 個人干得快,甚是悲哀。

就比如我們要開發(fā)一個 Web 項目,由前端工程師和后端工程師共同完成。

前端工程師懂 HTML / CSS / JavaScript 和 Bootstrap 等前端技術(shù)與框架,但是幾乎不懂后端 Java 語言。

后端工程師懂 Spring Boot 開發(fā),略懂 HTML / CSS / JavaScript ,但是沒用過前端框架。

這種情況,如果使用 FreeMarker / Thymeleaf / JSP 等模板引擎,將面臨不小的困難。前端工程師得先去學習模板引擎的規(guī)則,后端人員需要跟前端溝通控制器交給模板引擎處理的數(shù)據(jù)。

怎么辦呢,不要擔心,大佬們早就解決這個問題了。

圖片描述

互聯(lián)網(wǎng)江湖圈,遇到問題先莫慌,早有大佬為我們開好路?。▓D片來源于網(wǎng)絡(luò),版權(quán)歸原作者所有)

2. 前后端分離

前后端分離這種概念和技術(shù),早就流行多年了。

具體點說,前端編寫 HTML 頁面,然后通過 Ajax 請求后端接口;后端把接口封裝成 API ,返回 JSON 格式的數(shù)據(jù);前端接收到 JSON 返回數(shù)據(jù)后渲染到頁面。

前端工程師根本不需要懂后端,調(diào)用后端接口就行。后端使用 Spring Boot 控制器返回 JSON 十分簡單,給方法添加個注解,就能將返回值序列化為 JSON 。

前端干前端的活,后端干后端的活,職責分明,界限明確。這就是前后端分離的好處??!

3. RESTful 風格后端接口

前后端分離時,后端接口可不能太隨意,目前后端接口編寫大多遵循 RESTful 風格。

做后端接口的公司這么多,如果大家都定義自己的規(guī)范,是不利于公司之間的合作的。如果大家都能遵循一個規(guī)范來開發(fā)接口,很明顯相關(guān)人員都能省心不少。

RESTful 就是一種非常流行的 HTTP 接口規(guī)范,簡單明了,使用的人也多,用它準沒錯。

圖片描述

規(guī)范的意義,就是提供標準,提高效率。汽車行業(yè)標準化程度已經(jīng)很高了,軟件行業(yè)還需努力?。▓D片來源于網(wǎng)絡(luò),版權(quán)歸原作者所有)

4. 整體流程說明

本節(jié)實現(xiàn)一個基于 RESTful 風格的 Spring Boot 商品瀏覽 API 實例。

做事之前,先定整體流程。凡事預則立,不預則廢,老祖宗的智慧太厲害了,我們爭取發(fā)揚光大。確定流程如下:

圖片描述

整體流程

5. 開發(fā)階段

5.1 根據(jù)需求制定 RESTful 風格的接口文檔

既然是要做商品瀏覽頁面,將商品增刪改查都實現(xiàn)了就是了。 RESTful 風格接口并不麻煩,一般情況下需要項目團隊一起商量制定。此處我們指定如下:

動詞 接口含義 接口地址
GET 查詢商品 (id=1) 信息 http://127.0.0.1:8080/goods/1
GET 查詢商品列表信息 http://127.0.0.1:8080/goods
POST 新增商品 http://127.0.0.1:8080/goods
PUT 修改商品 (id=1) 信息 http://127.0.0.1:8080/goods/1
DELETE 刪除商品 (id=1) http://127.0.0.1:8080/goods/1

Tips: RESTful 風格通過 HTTP 動詞( GET / POST / PUT / DELETE )區(qū)分操作類型, URL 格式比較固定,僅此而已,非常簡單。

5.2 按文檔開發(fā)后端 API 接口

相比于使用模板引擎,用 Spring Boot 開發(fā)后端接口簡直太輕松了。通過給控制器添加注解,就能將控制器方法返回值序列化為 JSON 。程序員最愛,就是輕松又愉快。

5.2.1 使用 Spring Initializr 創(chuàng)建項目

Spring Boot 版本選擇 2.2.5 , Group 為 com.imooc , Artifact 為 spring-boot-restful ,生成項目后導入 Eclipse 開發(fā)環(huán)境。

像這種老套的重復操作,我還是拿出來講講,為何,因為要繼續(xù)呵護我們的初學者們。萬一有朋友因為一個小地方看不明白,喪失了學習編程的動力,那就是罪過了。

5.2.2 引入項目依賴

RESTful 項目其實就是標準的 Web 項目,引入 Web 項目依賴即可。

實例:

	  <!-- 引入web項目相關(guān)依賴 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

5.2.3 創(chuàng)建商品類與商品服務(wù)類

創(chuàng)建商品類與商品服務(wù)類,以完成對商品的增刪改查操作。由于本章我們的重點是演示 RESTful 后端接口,所以此處沒有操作真實的數(shù)據(jù)庫。

實例:

/**
 * 商品類
 */
public class GoodsDo {
	/**
	 * 商品id
	 */
	private Long id;
	/**
	 * 商品名稱
	 */
	private String name;
	/**
	 * 商品價格
	 */
	private String price;
	/**
	 * 商品圖片
	 */
	private String pic;
  //省略get set方法
}

實例:

/**
 * 商品服務(wù)
 */
@Service // 注冊為服務(wù)類
public class GoodsService {
	/**
	 * 獲取商品列表
	 */
	public List<GoodsDo> getGoodsList() {
		List<GoodsDo> goodsList = new ArrayList<GoodsDo>();
		GoodsDo goods = new GoodsDo();
		goods.setId(1L);
		goods.setName("蘋果");
		goods.setPic("apple.jpg");
		goods.setPrice("3.5");
		goodsList.add(goods);
		return goodsList;
	}
	/**
	 * 按id獲取商品信息,模擬返回對應(yīng)商品信息
	 */
	public GoodsDo getGoodsById(Long id) {
		GoodsDo goods = new GoodsDo();
		goods.setId(1L);
		goods.setName("蘋果");
		goods.setPic("apple.jpg");
		goods.setPrice("3.5");
		return goods;
	}
	/**
	 * 新增商品,模擬返回數(shù)據(jù)庫影響行數(shù)
	 */
	public int addGoods(GoodsDo goods) {
		return 1;
	}
	/**
	 * 根據(jù)商品id更新商品信息,模擬返回數(shù)據(jù)庫影響行數(shù)
	 */
	public int editGoods(GoodsDo goods) {
		return 1;
	}
	/**
	 * 根據(jù)商品id刪除對應(yīng)商品,模擬返回數(shù)據(jù)庫影響行數(shù)
	 */
	public int removeGoods(Long id) {
		return 1;
	}
}

Tips: 服務(wù)層方法,建議不要使用 select /insert/update /delete 命名,因為服務(wù)層處理的邏輯往往不止于關(guān)系數(shù)據(jù)庫表的增刪改查。此處采用的是 get /add/edit /remove 。

5.2.4 根據(jù) API 文檔實現(xiàn)控制器方法

此處需要解釋的地方我都寫在注釋中了。

實例:

@RestController // 通過該注解,第一是將GoodsController注冊為控制器,可以響應(yīng)Http請求;第二是可以將控制器中的方法返回值序列化為json格式。
public class GoodsController {
	@Autowired // 自動裝配goodsService
	private GoodsService goodsService;
	/**
	 * 查詢商品信息 
	 * 1、@GetMapping表示可以使用get方法請求該api
	 * 2、"/goods/{id}"表示請求路徑為/goods/{id}的形式,其中{id}為占位符
	 * 3、@PathVariable("id")表示將占位符{id}的值傳遞給id 
	 * 4、也就是說/goods/123請求的話,會將123傳遞給參數(shù)id
	 */
	@GetMapping("/goods/{id}")
	public GoodsDo getOne(@PathVariable("id") long id) {
		return goodsService.getGoodsById(id);
	}
	/**
	 * 查詢商品列表,使用get方法
	 */
	@GetMapping("/goods")
	public List<GoodsDo> getList() {
		return goodsService.getGoodsList();
	}
	/**
	 * 新增商品 
	 * 1、@PostMapping表示使用post方法
	 * 2、@RequestBody表示將請求中的json信息轉(zhuǎn)換為GoodsDo類型的對象信息,該轉(zhuǎn)換也是由SpringMVC自動完成的
	 */
	@PostMapping("/goods")
	public void add(@RequestBody GoodsDo goods) {
		goodsService.addGoods(goods);
	}
	/**
	 * 修改商品
	 */
	@PutMapping("/goods/{id}")
	public void update(@PathVariable("id") long id, @RequestBody GoodsDo goods) {
		// 修改指定id的商品信息
		goods.setId(id);
		goodsService.editGoods(goods);
	}
	/**
	 * 刪除商品
	 */
	@DeleteMapping("/goods/{id}")
	public void delete(@PathVariable("id") long id) {
		goodsService.removeGoods(id);
	}
}

5.3 使用 Postman 測試 API 接口可用

后端開發(fā)完 API 接口后,需要先進行下簡單測試以保證接口是正確可用的。

我們可以使用 Postman 進行簡單測試。啟動 Spring Boot 項目后,使用 Postman 進行可視化測試,此處結(jié)果如下:

圖片描述

測試查詢商品信息

圖片描述

測試查詢商品列表

圖片描述

測試新增商品

圖片描述

測試修改商品

圖片描述

測試刪除商品

6. 視頻演示

7. 小結(jié)

使用 Spring Boot 開發(fā) RESTful 風格的 Web 項目,是當前主流的 Web 項目開發(fā)模式。

這種開發(fā)模式的特點就是簡單、明確。簡單主要是依賴 Spring Boot 實現(xiàn),明確就是靠 RESTful 風格來規(guī)范。

簡單的目的就是提高開發(fā)效率;明確的目的是統(tǒng)一規(guī)范,從而降低溝通成本,最終也是為了提高開發(fā)效率。

Spring Boot 和 RESTful ,絕配!