【kodi源码输出无声】【preparestatement源码】【仪表 源码】springrest源码

时间:2024-12-26 02:13:02 编辑:腾讯云waf源码 来源:背景提取 matlab源码

1.springboot创建api?

springrest源码

源码kodi源码输出无声

springboot创建api?

源码kodi源码输出无声

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

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

       ç”¨Person对象接收参数

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

       pom

源码kodi源码输出无声

       RouterApplication

源码kodi源码输出无声

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

源码kodi源码输出无声

       é…ç½®

源码kodi源码输出无声

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

源码kodi源码输出无声

       è¯·æ±‚测试。

源码kodi源码输出无声

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

源码kodi源码输出无声基于SpringBoot的API测试

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

源码kodi源码输出无声

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

源码kodi源码输出无声

       1.准备测试数据

源码kodi源码输出无声

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

源码kodi源码输出无声

       3.验证返回结果的response

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声SpringBoot2基于Swagger2生成离线Api文档

       Github:

源码kodi源码输出无声

       Gitee:

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

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

源码kodi源码输出无声

源码kodi源码输出无声

搜索关键词:gorm源码分析