Java的新專案學成線上筆記-day1(八)
6.4 Controller
使用springMVC完成介面實現開發。
package com.xuecheng.manage_cms.web.controller; import com.xuecheng.api.cms.CmsPageControllerApi; import com.xuecheng.framework.domain.cms.request.QueryPageRequest; import com.xuecheng.framework.model.response.QueryResponseResult; import com.xuecheng.manage_cms.service.PageService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; @RestController public class CmsPageController implements CmsPageControllerApi { @Autowired PageService pageService; @Override @GetMapping("/list/{page}/{size}") public QueryResponseResult findList(@PathVariable("page") int page, @PathVariable("size") int size, QueryPageRequest queryPageRequest) { return pageService.findList(page,size,queryPageRequest); } }
使用瀏覽器測試
輸入:http://localhost:31001/cms/page/list/1/10 查詢第1頁,每頁顯示10條記錄。 6.6 介面開發規範
6.6.1 Api請求及響應規範
為了嚴格按照介面進行開發,提高效率,對請求及響應格式進行規範化。
1、get 請求時,採用key/value格式請求,SpringMVC可採用基本型別的變數接收,也可以採用物件接收。
2、Post請求時,可以提交form表單資料(application/x-www-form-urlencoded)和Json資料(ContentType=application/json),檔案等多部件型別(multipart/form-data)三種資料格式,SpringMVC接收Json資料 使用@RequestBody註解解析請求的json資料。 4、響應結果統一資訊為:是否成功、操作程式碼、提示資訊及自定義資料。
5、響應結果統一格式為json。 6.6.2 Api定義約束
Api定義使用SpringMVC來完成,由於此介面後期將作為微服務遠端呼叫使用,在定義介面時有如下限制: 1、@PathVariable 統一指定引數名稱,如:@PathVariable("id") 2、@RequestParam統一指定引數名稱,如: @RequestParam("id")
7 頁面查詢介面測試
上邊的程式碼是基於服務端編寫介面,如果前端人員等待服務端人員將介面開發完畢再去開發前端內容這樣做效率是 非常低下的,所以當介面定義完成,可以使用工具生成介面文件,前端人員檢視介面文件即可進行前端開發,這樣 前端和服務人員並行開發,大大提高了生產效率。
本章節介紹兩種介面開發工具,Swagger和Postman。 7.1 Swagger
7.1.1 Swagger介紹
OpenAPI規範(OpenAPI Specification 簡稱OAS)是Linux基金會的一個專案,試圖通過定義一種用來描述API格 式或API定義的語言,來規範RESTful服務開發過程,目前版本是V3.0,並且已經發布並開源在github上。
(
Spring Boot 可以整合Swagger,生成Swagger介面,Spring Boot是Java領域的神器,它是Spring專案下快速構建 專案的框架。
7.1.2 Swagger常用註解
在Java類中新增Swagger的註解即可生成Swagger介面,常用Swagger註解如下:
@Api:修飾整個類,描述Controller的作用 @ApiOperation:描述一個類的一個方法,或者說一個介面 @ApiParam:單個引數描述 @ApiModel:用物件來接收引數 @ApiModelProperty:用物件接收引數時,描述對 象的一個欄位 @ApiResponse:HTTP響應其中1個描述 @ApiResponses:HTTP響應整體描述 @ApiIgnore:使用 該註解忽略這個API @ApiError :發生錯誤返回的資訊 @ApiImplicitParam:一個請求引數 @ApiImplicitParams:多個請求引數 @ApiImplicitParam屬性:
7.1.3 Swagger介面定義
修改介面工程中頁面查詢介面,新增Swagger註解。
[mw_shl_code=applescript,true]@Api(value="cms頁面管理介面",description = "cms頁面管理介面,提供頁面的增、刪、改、查")
public interface CmsPageControllerApi {
@ApiOperation("分頁查詢頁面列表")
@ApiImplicitParams({
@ApiImplicitParam(name="page",value = "頁 碼",required=true,paramType="path",dataType="int"),
@ApiImplicitParam(name="size",value = "每頁記錄 數",required=true,paramType="path",dataType="int")
})
public QueryResponseResult findList(int page, int size, QueryPageRequest queryPageRequest) ;
}
[/mw_shl_code]
在QueryPageRequest類中使用註解 ApiModelProperty 對屬性註釋:
@Data
public class QueryPageRequest extends RequestData {
//站點id
@ApiModelProperty("站點id")
private String siteId;
//頁面ID
@ApiModelProperty("頁面ID")
private String pageId;
//頁面名稱
@ApiModelProperty("頁面名稱")
private String pageName;
//頁面別名
@ApiModelProperty("頁面別名")
private String pageAliase;
//模版id
@ApiModelProperty("模版id")
private String templateId;
}