【移动oa系统源码】【java免费项目源码】【彩虹源码正版授权】springrest源码

时间:2024-12-28 23:47:58 分类:王者c11源码 来源:156006源码

1.springboot创建api?

springrest源码

源码移动oa系统源码

springboot创建api?

源码移动oa系统源码

       æˆ‘是这样使用SpringBoot(API传参)

       springboot中的Controller或者RestController接收参数的方法是一样的。这章目标是对几种常用的传参都写个例子。

源码移动oa系统源码

       åˆ›å»ºpackage:com.biboheart.demos.api,这个包里放置API接口的RestController

源码移动oa系统源码

       åœ¨com.biboheart.demos.api包中创建一个class:ParamController。这章的示例都在这个类中进行。

源码移动oa系统源码

       è·¯å¾„中包含参数,这种情况适合与传递一个不能为空值的参数。比如有些应用中,查询某个企业的数据,必须包含企业的编号,就可以在地址里接收这个编号。

源码移动oa系统源码

       åœ¨ParamController中增加一个函数PathParam

源码移动oa系统源码

       è·¯å¾„中的参数通过{ sn}接收值。

源码移动oa系统源码

       ä½¿ç”¨åç§°æŽ¥æ”¶å‚数比较直观,我用得比较多。不用注解。跟客户端传的参数同名就可以接收到。如下例子中的reqParam

源码移动oa系统源码

       ä¹Ÿå¯ä»¥ç”¨get传参

源码移动oa系统源码

       ä¸Šé¢ç”¨å‚数名称接收值,只要与请求时的名称一致就能接收到参数值。如果需要传递的参数比较多的时候,就不适合一个一个参数写在函数里了,那样很不方便,也容易出错。可以把这些参数写到一个对象里接收。如下例子

源码移动oa系统源码

       åˆ›å»ºä¸€ä¸ªpackage:com.biboheart.demos.model,创建一个类Person

源码移动oa系统源码

       ç”¨Person对象接收参数

源码移动oa系统源码

       è™½ç„¶è¿™æ ·çš„方式也能接收get传参,但是因为需要传的参数多了,用get显得不太方便。这里就不测试GET方式请求了。

源码移动oa系统源码

       æœ‰çš„时候,需要接收JSON传参。比如某些服务的调用需要开发一个回调函数接收对方的回调并获得参数值为结果,对方回调回来的值是JSON格式的值,这时候就需要接收JSON传参数了。用RequestBody可以接收到JSON传值。

源码移动oa系统源码

       éœ€è¦JSON请求才能正确接到值

源码移动oa系统源码

       SpringBoot实例:医院统一信息平台(apigateway)

源码移动oa系统源码

       å‰é¢å·²ç»åœ¨å¹³å°ä¸­ä½¿ç”¨äº†springcloud。每个小的服务中各自实现相关业务,提供API。这些服务的访问地址都可能不一样。这样给使用都造成困扰,而且服务器接口管理也复杂了。

源码移动oa系统源码

       api-gateway就是把这些api通过一个服务提供出去。在这个服务中代理其它服务的API。对于服务的使用都就像是访问一台服务器。

源码移动oa系统源码

       è¿™é‡Œç”¨springzuul实现api-gateway。

源码移动oa系统源码

       åˆ›å»ºä¸€ä¸ªé¡¹ç›®ï¼ˆæœåŠ¡ï¼‰ï¼Œä¸“门做api代理。服务名称huip-router。

源码移动oa系统源码

       pom

源码移动oa系统源码

       RouterApplication

源码移动oa系统源码

       ä¸ºäº†æ”¯æŒè·¨åŸŸï¼Œå¢žåŠ ä¸€ä¸ªFilter

源码移动oa系统源码

       é…ç½®

源码移动oa系统源码

       åœ¨API请求开头为/huipuser/时访问的是user服务的API,如果开头/huippatient/时访问的是patient服务的API。比如请求相当于

源码移动oa系统源码

       è¯·æ±‚测试。

源码移动oa系统源码

       SpringBoot实例:医院统一信息平台(服务间通讯)的访问流程改成用代理。

源码移动oa系统源码基于SpringBoot的API测试

       äº’联网产品的测试策略现在很多都会存在API测试、轻量级GUI测试、轻量级单元测试等。API测试其实我们一开始想得最多的图形化工具应该是postman、jmeter等。如果使用最简单的get方法,还可以直接通过使用CURL命令(即命令行工具cURL)。

源码移动oa系统源码

       ä¸ç®¡ä½¿ç”¨ä»€ä¹ˆAPI测试工具,API测试的基本步骤大体一致:

源码移动oa系统源码

       1.准备测试数据

源码移动oa系统源码

       2.通过API测试工具,发起对被测API的request

源码移动oa系统源码

       3.验证返回结果的response

源码移动oa系统源码

       æˆ‘们平时在工作中,接触得最多的是用JAVA框架Springboot框架开发的简单的RestfulAPI。

源码移动oa系统源码

       Springboot建议的目录结果如下:rootpackage结构-com.example.myproject

源码移动oa系统源码瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅

       å‡è®¾å®žçŽ°ä¸€ä¸ªæ³¨å†Œç”¨æˆ·çš„功能,在controller层,他会先进行校验参数,如下:

源码移动oa系统源码

       ä»¥ä¸Šä»£ç æœ‰ä»€ä¹ˆé—®é¢˜å˜›ï¼Ÿå…¶å®žæ²¡ä»€ä¹ˆé—®é¢˜ï¼Œå°±æ˜¯æ ¡éªŒæœ‰ç‚¹è¾£çœ¼ç›ã€‚正常的添加用户业务还没写,参数校验就一大堆啦。假设后来,又接了一个需求:编辑用户信息。实现编辑用户信息前,也是先校验信息,如下:

源码移动oa系统源码

       æˆ‘们可以使用注解的方式,来进行参数校验,这样代码更加简洁,也方便统一管理。实际上,springboot有个validation的组件,我们可以拿来即用。引入这个包即可:

源码移动oa系统源码

       å¼•å…¥åŒ…后,参数校验就非常简洁啦,如下:

源码移动oa系统源码

       ç„¶åŽåœ¨UserParam参数对象中,加入@Validated注解哈,把错误信息接收到BindingResult对象,代码如下:

源码移动oa系统源码

       å¦‚果你在你们项目代码中,看到controller层报文返回结果,有这样的:

源码移动oa系统源码

       ä¹Ÿæœ‰è¿™æ ·çš„:

源码移动oa系统源码

       æ˜¾ç„¶ï¼Œå¦‚果接口返回结果不统一,前端处理就不方便,我们代码也不好维护。再比如有的人喜欢用Result处理结果,有点人喜欢用Response处理结果,可以想象一下,这些代码有多乱。

源码移动oa系统源码

       æ‰€ä»¥ä½œä¸ºåŽç«¯å¼€å‘,我们项目的响应结果,需要统一标准的返回格式。一般一个标准的响应报文对象,都有哪些属性呢?

源码移动oa系统源码

       å“åº”状态码一般用枚举表示哈:

源码移动oa系统源码

       å› ä¸ºè¿”回的数据类型不是确定的,我们可以使用泛型,如下:

源码移动oa系统源码

       æœ‰äº†ç»Ÿä¸€çš„响应体,我们就可以优化一下controller层的代码啦:

源码移动oa系统源码

       æ—¥å¸¸å¼€å‘中,我们一般都是自定义统一的异常类,如下:

源码移动oa系统源码

       åœ¨controller层,很可能会有类似代码:

源码移动oa系统源码

       è¿™å—代码,没什么问题哈,但是如果try...catch太多,不是很优雅。

源码移动oa系统源码

       å¯ä»¥å€ŸåŠ©æ³¨è§£@RestControllerAdvice,让代码更优雅。@RestControllerAdvice是一个应用于Controller层的切面注解,它一般配合@ExceptionHandler注解一起使用,作为项目的全局异常处理。我们来看下demo代码哈。

源码移动oa系统源码

       è¿˜æ˜¯åŽŸæ¥çš„UserController,和一个会抛出异常的userService的方法,如下:

源码移动oa系统源码

       æˆ‘们再定义一个全局异常处理器,用@RestControllerAdvice注解,如下:

源码移动oa系统源码

       æˆ‘们有想要拦截的异常类型,比如想拦截BizException类型,就新增一个方法,使用@ExceptionHandler注解修饰,如下:

源码移动oa系统源码SpringBoot2基于Swagger2生成离线Api文档

       Github:

源码移动oa系统源码

       Gitee:

源码移动oa系统源码

       ä¸ªäººè§‰å¾—旧版的配置简单许多,新版的配置按照官方demo的配置来做还是复杂了很多

源码移动oa系统源码

       é…ç½®åˆ°Springboot项目中以后,在项目打包的时候便会通过单元测试在指定的目录生成被官方称为staticdocs的离线文档

源码移动oa系统源码

       è¯¥ç¯‡åšæ–‡å¼•ç”¨çš„依赖都要引入,SpringRestDocs的依赖spring-restdocs-mockmvc,离线文档的依赖springfox-staticdocs,因为要在单元测试的时候生成文档,所以需要再加测试相关的spring-boot-starter-test。

源码移动oa系统源码

       asciidoctor-maven-plugin插件会把Asciidoc格式文件转成HTML5格式输出。

源码移动oa系统源码

       è¿™ä¸ªç±»åŒ…含两个方法,TestApi()是用来生成例子,test()用来生成Asciidoc的文档。生成例子用到了spring-restdocs-mockmvc,每一个API都要进行单元测试才能生成相应的文档片段(snippets),生成的结果如图:

源码移动oa系统源码

       ç”Ÿæˆå®Œæ•´çš„Asciidoc文档用到了Swagger2MarkupConverter,第一步先获取在线版本的文档并保存到文件swagger.json中,第二步把swagger.json和之前的例子snippets整合并保存为Asciidoc格式的完整文档。生成结果如图:

源码移动oa系统源码

       é€šè¿‡é…ç½®ç±»å®šä¹‰ä¸€äº›æ–‡æ¡£ç›¸å…³çš„信息

源码移动oa系统源码

       è·¯å¾„:项目名/docs/asciidoc/index.adoc

源码移动oa系统源码

       åˆ©ç”¨å‰é¢é…ç½®çš„maven插件,只需要执行打包就可以生成相应的文档,如图:

源码移动oa系统源码

       è¯¥ç¯‡åšæ–‡å¼•ç”¨çš„依赖都要引入,SpringRestDocs的依赖spring-restdocs-mockmvc,离线文档的依赖springfox-staticdocs,因为要在单元测试的时候生成文档,所以需要再加测试相关的spring-boot-starter-test。

源码移动oa系统源码

       asciidoctor-maven-plugin插件会把Asciidoc格式文件转成HTML5格式输出。

源码移动oa系统源码

       è¿™ä¸ªç±»åŒ…含两个方法,TestApi()是用来生成例子,createSpringfoxSwaggerJson()用来生成Asciidoc的文档。生成例子用到了spring-restdocs-mockmvc,每一个API都要进行单元测试才能生成相应的文档片段(snippets),生成的结果如图:

源码移动oa系统源码

       ç”Ÿæˆå®Œæ•´çš„Asciidoc文档用到了Swagger2MarkupConverter,第一步先获取在线版本的文档并保存到文件swagger.json中,第二步把swagger.json和之前的例子snippets整合并保存为Asciidoc格式的完整文档。生成结果如图:

源码移动oa系统源码

       é€šè¿‡é…ç½®ç±»å®šä¹‰ä¸€äº›æ–‡æ¡£ç›¸å…³çš„信息

源码移动oa系统源码

       åœ¨resources目录下创建一个名为logback.xml的配置文件,使用LogstashEncoder作为DefaultLogEncoder

源码移动oa系统源码

       è·¯å¾„:项目名src/docs/asciidoc/index.adoc

源码移动oa系统源码

       åˆ©ç”¨å‰é¢é…ç½®çš„maven插件,只需要执行打包就可以生成相应的文档,如图:

源码移动oa系统源码

源码移动oa系统源码