资讯专栏INFORMATION COLUMN

Spring Boot学习笔记(四)构建RESTful API标准工程实例

firim / 3311人阅读

摘要:总结基于构建相对来说还是比较便捷的,其中注解使得代码更加简洁,本次用到注解再汇总下,有时间的话可以深入理解下其背后的原理申明让自动给程序进行必要的配置。风格的控制器提供路由信息,负责到中的具体函数的映射一般用于修饰层的组件自动导入依赖的

本文主要记录搭建RESTful API标准工程,包含比较推荐的工程结构,掌握一些基本注解,并引入Swagger
新建一个项目

通过Spring Initializr创建工程,选择所需要的jar包,如下图:

工程结构

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

编写第一个服务

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,直接启动,输入对应的地址可看到结果:

增加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加入:


    io.springfox
    springfox-swagger2
    2.7.0



    io.springfox
    springfox-swagger-ui
    2.7.0

新增类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();
}

至此,简单的框架算是完成了,后面就可以逐步完善,包括接入日志,数据库等等,后面会持续更新。

总结

基于Spring Boot构建RESTful API相对来说还是比较便捷的,其中注解使得代码更加简洁,本次用到注解再汇总下,有时间的话可以深入理解下其背后的原理:

@SpringBootApplication: 申明让spring boot自动给程序进行必要的配置。

@RestController:REST风格的控制器

@RequestMapping:提供路由信息,负责URL到Controller中的具体函数的映射

@Service:一般用于修饰service层的组件

@Autowired: 自动导入依赖的bean

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/68923.html

相关文章

  • Spring Boot学习笔记(六)结合MyBatis实现较为复杂的RESTful API

    摘要:前两篇已经构建了标准工程实例,也整合了实现了简单数据库访问,本篇主要更深入的学习下,实现较为完整的数据库的标准服务。到这里,最复杂的数据访问基本就算编写完了。 前两篇已经构建了RESTful API标准工程实例,也整合了MyBatis实现了简单数据库访问,本篇主要更深入的学习下,实现较为完整的数据库CRUD的标准服务。 首先看下要实现的效果吧,完成下面截图部分的API,除了CRUD之外...

    CntChen 评论0 收藏0
  • Spring Boot学习笔记(五)整合MyBatis实现数据库访问

    摘要:关闭进程问题顺利解决。问题泄也是一个奇葩的问题,百度一下,原来碰到的人挺多,原因就是高版本的驱动会有数据库和系统时区差异我用的版本是,所以碰到了,修改下配置,执行时区就可以了或者用回版本,该版本不会存在时区问题。 本文主要在上一篇Spring Boot学习笔记(四)构建RESTful API标准工程实例的基础上,整合MyBatis,实现简单的MySql数据库访问 引入依赖 这里主要依赖...

    Tony 评论0 收藏0
  • Spring Boot 2.x(十):构建优雅的RESTful接口

    摘要:满足这些约束条件和原则的应用程序或设计就是。需要注意的是,是设计风格而不是标准。同一个路径,因为请求方式的不同,而去找寻不同的接口,完成对资源状态的转变。一个符合风格的就可以称之一个的接口。 RESTful 相信在座的各位对于RESTful都是略有耳闻,那么RESTful到底是什么呢? REST(Representational State Transfer)表述性状态转移是一组架构约...

    nevermind 评论0 收藏0
  • Spring Security

    摘要:框架具有轻便,开源的优点,所以本译见构建用户管理微服务五使用令牌和来实现身份验证往期译见系列文章在账号分享中持续连载,敬请查看在往期译见系列的文章中,我们已经建立了业务逻辑数据访问层和前端控制器但是忽略了对身份进行验证。 重拾后端之Spring Boot(四):使用JWT和Spring Security保护REST API 重拾后端之Spring Boot(一):REST API的搭建...

    keelii 评论0 收藏0
  • Spring Web

    摘要:认证鉴权与权限控制在微服务架构中的设计与实现一引言本文系认证鉴权与权限控制在微服务架构中的设计与实现系列的第一篇,本系列预计四篇文章讲解微服务下的认证鉴权与权限控制的实现。 java 开源项目收集 平时收藏的 java 项目和工具 某小公司RESTful、共用接口、前后端分离、接口约定的实践 随着互联网高速发展,公司对项目开发周期不断缩短,我们面对各种需求,使用原有对接方式,各端已经很...

    Kosmos 评论0 收藏0

发表评论

0条评论

firim

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<