1. 程式人生 > >Spring Cloud Spring Boot mybatis分布式微服務雲架構(十)

Spring Cloud Spring Boot mybatis分布式微服務雲架構(十)

Spring cloud Spring Boot 架構 Java

在完成了上述配置後,其實已經可以生產文檔內容,但是這樣的文檔主要針對請求本身,而描述主要來源於函數等命名產生,對用戶並不友好,我們通常需要自己增加一些說明來豐富文檔內容。如下所示,我們通過@ApiOperation註解來給API增加說明、通過@ApiImplicitParams、@ApiImplicitParam註解來給參數增加說明。

[java] view plain copy
@RestController
@RequestMapping(value="/users") // 通過這裏配置使下面的映射都在/users下,可去除
public class UserController {

static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());  

@ApiOperation(value="獲取用戶列表", notes="")  
@RequestMapping(value={""}, method=RequestMethod.GET)  
public List<User> getUserList() {  
    List<User> r = new ArrayList<User>(users.values());  
    return r;  
}  

@ApiOperation(value="創建用戶", notes="根據User對象創建用戶")  
@ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")  
@RequestMapping(value="", method=RequestMethod.POST)  
public String postUser(@RequestBody User user) {  
    users.put(user.getId(), user);  
    return "success";  
}  

@ApiOperation(value="獲取用戶詳細信息", notes="根據url的id來獲取用戶詳細信息")  
@ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long")  
@RequestMapping(value="/{id}", method=RequestMethod.GET)  
public User getUser(@PathVariable Long id) {  
    return users.get(id);  
}  

@ApiOperation(value="更新用戶詳細信息", notes="根據url的id來指定更新對象,並根據傳過來的user信息來更新用戶詳細信息")  
@ApiImplicitParams({  
        @ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long"),  
        @ApiImplicitParam(name = "user", value = "用戶詳細實體user", required = true, dataType = "User")  
})  
@RequestMapping(value="/{id}", method=RequestMethod.PUT)  
public String putUser(@PathVariable Long id, @RequestBody User user) {  
    User u = users.get(id);  
    u.setName(user.getName());  
    u.setAge(user.getAge());  
    users.put(id, u);  
    return "success";  
}  

@ApiOperation(value="刪除用戶", notes="根據url的id來指定刪除對象")  
@ApiImplicitParam(name = "id", value = "用戶ID", required = true, dataType = "Long")  
@RequestMapping(value="/{id}", method=RequestMethod.DELETE)  
public String deleteUser(@PathVariable Long id) {  
    users.remove(id);  
    return "success";  
}  

}

完成上述代碼添加上,啟動Spring Boot程序,訪問:http://localhost:8080/swagger-ui.html
。就能看到前文所展示的RESTful API的頁面。我們可以再點開具體的API請求,以POST類型的/users請求為例,可找到上述代碼中我們配置的Notes信息以及參數user的描述信息,如下圖所示。

altalt

API文檔訪問與調試

在上圖請求的頁面中,我們看到user的Value是個輸入框?是的,Swagger除了查看接口功能外,還提供了調試測試功能,我們可以點擊上圖中右側的Model Schema(×××區域:它指明了User的數據結構),此時Value中就有了user對象的模板,我們只需要稍適修改,點擊下方“Try it out!”按鈕,即可完成了一次請求調用!

此時,你也可以通過幾個GET請求來驗證之前的POST請求是否正確。

相比為這些接口編寫文檔的工作,我們增加的配置內容是非常少而且精簡的,對於原有代碼的侵入也在忍受範圍之內。因此,在構建RESTful API的同時,加入swagger來對API文檔進行管理,是個不錯的選擇。

Spring Cloud Spring Boot mybatis分布式微服務雲架構(十)