Spring Boot學習筆記(四)構建RESTful API標準工程實例

本文主要記錄搭建RESTful API標準工程,包含比較推薦的工程結構,掌握一些基本注解,并引入Swagger

新建一個項目

通過Spring Initializr創建工程,選擇所需要的jar包,如下圖:

圖1
圖2
圖3

工程結構

Spring Boot框架對工程結構并沒有什么特殊的限制,我這邊基本按照網上主流和自己一些喜好進行劃分,供參考:

代碼層結構
  • 前端控制器(Controller): com.xxx.controller
  • 數據服務層(Service): com.xxx.service
  • 實體(Entity)與數據訪問層(Repository):com.xxx.domain
  • 公共方法及工具類: com.xxx.common
資源文件的結構
  • 配置文件: src/main/resources/config
  • 靜態文件: src/main/resources/static
  • 模板: src/main/resources/templates
圖4

編寫第一個服務

controller下新建類HelloController,相關代碼做了簡單的注釋,如下:

//相當于 @Controller + @ResponseBody
//該注解 方法method 返回類型是String時候則返回string,返回對象時候則講json_encode 該對象的json字符串
@RestController
public class HelloController {
    //該注解mapping指定路由
    @RequestMapping(value = "/hello",method = RequestMethod.GET)
    public String SayHello() {
        return "Hello Spring Boot";
    }
}

編寫到這里,已經可以直接編譯運行了,這里值得注意的是被@SpringBootApplication注解的啟動類一定要放在所有的RestController的根路徑的package下,@SpringBootApplication只會掃描@SpringBootApplication注解標記類包下及其子包的類,如果不放在根路徑下,可以指定下:@SpringBootApplication(scanBasePackages = "com.example.api_demo")

無需配置Tomcat,直接啟動,輸入對應的地址可看到結果:

圖5
圖6

增加service層

在搭建了基礎應用的基礎上,我們增加service層抽離控制層和業務層代碼。

service下新增HelloServiceHelloServiceImpl兩個類,代碼如下:

//業務層接口:HelloService
public interface HelloService {
    public String sayHello();
}

//接口實現:HelloServiceImpl
@Service
public class HelloServiceImpl  implements HelloService{
    @Override
    public String sayHello()
    {
        return "Hello Spring Boot";
    }
}

修改對應的controller代碼:

@Autowired
private HelloService helloService;

@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String sayHello()
{
    return helloService.sayHello();
}

這樣,簡單的拆分就完成了。

引入Swagger

Swagger是什么大家自行百度,對于Restful API來說,Swagger絕對是它的好基友。

首先引入對應的jar包,在pom.xml加入:

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.7.0</version>
</dependency>

<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.7.0</version>
</dependency>

新增類Swagger2.java,代碼如下:

@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.example.api_demo.controller"))
                .paths(PathSelectors.any())
                .build();
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("測試文檔")
                .description("這里是一段描述")
                .termsOfServiceUrl("http://www.bug2048.com/")
                .version("1.0")
                .build();
    }
}

到這里,Swagger就算配置完成了,接下來就是要添加文檔內容了,修改之前的HelloController之后,直接編譯運行,通過/swagger-ui.html就能看到效果

@ApiOperation(value="增加Service層輸出Hello", notes="這是第二個demo")
@RequestMapping(value = "/hello",method = RequestMethod.GET)
public String sayHello()
{
    return helloService.sayHello();
}
圖7
圖8

至此,簡單的框架算是完成了,后面就可以逐步完善,包括接入日志,數據庫等等,后面會持續更新。

總結

基于Spring Boot構建RESTful API相對來說還是比較便捷的,其中注解使得代碼更加簡潔,本次用到注解再匯總下,有時間的話可以深入理解下其背后的原理:

  • @SpringBootApplication: 申明讓spring boot自動給程序進行必要的配置。
  • @RestController:REST風格的控制器
  • @RequestMapping:提供路由信息,負責URL到Controller中的具體函數的映射
  • @Service:一般用于修飾service層的組件
  • @Autowired: 自動導入依賴的bean
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Boot 參考指南 介紹 轉載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,958評論 6 342
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,948評論 18 139
  • 《Spring Boot開發:從0到1》 大綱結構v2.0 第一部分Spring Boot基礎 第1章 Sprin...
    光劍書架上的書閱讀 10,990評論 1 70
  • 心態決定了高度的不同,任何一種成功都需要積極的心態,并且需要認真學習每一種新的技巧!
    榮軍宇閱讀 90評論 0 0
  • “山無棱,江水為竭,冬雷震震,夏雨雪”金蛇郎君夏雪宜就如這詩句一般,是這世上最永恒不變規律的異變。他心思縝絕,又俊...
    風尚資訊閱讀 312評論 0 0