皮皮网

【object类的源码】【小蚁股源码】【android 长连接 源码】springbootapi源码

2024-12-29 02:37:05 来源:dj音乐模板源码

1.TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
2.Spring Boot 调用外部接口的 3 种方式
3.springboot创建api?
4.Spring Boot 调用外部接口的 3 种方式,还有谁不会?!
5.神器 SpringDoc 横空出世!最适合 SpringBoot 的API文档工具来了
6.springdoc-openapi:帮助spring-boot自动生成API的开源库工具

springbootapi源码

TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化

       SpringBoot,作为Java开发领域广受欢迎的技术框架,在构建Web应用程序和微服务方面发挥着重要作用。object类的源码它通过简化开发流程、提供约定大于配置的原则以及集成常用库和组件,助力开发者高效构建应用程序。

       为了帮助开发者更好地掌握SpringBoot,我们整理了TDengine资深研发的内部分享——《SpringBoot 多语言支持方案》,供开发者参考。

       在项目依赖中引入spring-boot-starter和spring-boot-autoconfigure两个包,即可使用SpringBoot提供的多语言定义和解析工具。在spring-boot-autoconfigure的源码中,可以看到MessageSourceAutoConfiguration类已自动装配了MessageSource对象。

       在IDEA中,在resources资源包上右键新建资源包,填写资源包名如:messages,选择区域设置,包括en、zh_CN、zh_TC等选项。在resources包内即可看到绑定的多语言文件。

       在配置文件中添加message,格式为:{ code}={ message}。在业务模块中使用多语言消息,首先分析API服务请求响应流程,包括身份认证、API接口鉴权认证、权限识别等,小蚁股源码验证通过后进入业务逻辑,最后通过接口返回。

       异常国际化配置可以通过定义多语言message和获取LocaleMessageProvider实现。SpringBoot框架通过LocaleContextHolder.getLocale()获取Locale,并在RequestContextFilter中设置LocaleContext。

       客户端在请求中添加Accept-Language=zh-CN头,即可验证返回的结果。例如,登录出错时,客户端接收到的信息为国际化后的错误信息。

       以上就是基于SpringBoot多语言支持方案的完整分享,希望对开发者有所帮助。如有其他技术问题或时序数据处理难题,可联系TDengine的技术研发人员进行沟通。

       TDengine是一款高性能、集群开源、云原生的时序数据库,专为物联网、工业互联网、电力、IT运维等场景设计。它具有内建的缓存、流式计算、数据订阅等系统功能,降低系统设计复杂度和研发运营成本。TDengine提供TDengine Enterprise和TDengine Cloud两个版本,用户可根据需求选择。

Spring Boot 调用外部接口的 3 种方式

       1 简介

       SpringBoot提供简便的开发与部署方式,简化了Spring应用的搭建过程,尤其在访问外部接口方面提供了多种方式。android 长连接 源码在进行API聚合或调用外部服务时,SpringBoot提供了三种主流的接口调用方法,这里将详细介绍。

       2 方式一:使用原始.biboheart.demos.api,这个包里放置API接口的RestController

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

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

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

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

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

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

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

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

       ç”¨Person对象接收参数

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

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

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

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

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

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

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

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

       pom

       RouterApplication

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

       é…ç½®

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

       è¯·æ±‚测试。

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

基于SpringBoot的API测试

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

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

       1.准备测试数据

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

       3.验证返回结果的response

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

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

瞧瞧人家用SpringBoot写的后端API接口,那叫一个优雅

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

SpringBoot2基于Swagger2生成离线Api文档

       Github:

       Gitee:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Spring Boot 调用外部接口的 3 种方式,还有谁不会?!

       深入理解Spring Boot调用外部接口的三种方式,满足您的需求。

       Spring Boot,作为高效轻量级的框架,简化了Spring应用的开发过程,提供多种方式调用外部接口,适应不同场景。接下来,我们来探讨Spring Boot调用外部接口的三种主流方法。

       方式一:原始HTTP客户端请求

       Spring Boot 提供了`HttpClient`接口,允许开发者直接进行HTTP请求。通过`HttpClient`,您可以实现GET和POST请求,支持多种响应类型,灵活且直接。

       Get请求支持多种调用方式,包括`getForEntity`和`getForObject`。`getForEntity`接受URI、响应类型和可选的URL变量作为参数,返回响应体和状态信息。而`getForObject`则进一步封装,直接返回转换后的对象。

       Post请求则提供了`postForEntity`、`postForObject`和`postForLocation`等方法,支持不同的穿头破脚源码请求参数和响应处理。以`postForEntity`为例,它接受URI、响应类型和请求体作为参数,返回响应实体和状态信息。

       方式二:使用`RestTemplate`

       `RestTemplate`是Spring框架提供的核心工具类,专门用于处理RESTful API请求。它封装了HTTP请求的细节,简化了与Web服务的交互。`RestTemplate`提供了`getForObject`和`getForEntity`方法用于GET请求,以及`postForObject`、`postForEntity`等方法用于POST请求。

       通过`RestTemplate`,您可以轻松地处理请求和响应,获取JSON、XML等数据格式,并自动进行序列化或反序列化操作。

       方式三:使用`Feign`进行服务调用

       Feign是Spring团队推出的高生产力的HTTP客户端,允许开发者以声明式的方式编写HTTP请求。在Spring Boot中,通过引入Feign依赖并配置@EnableFeignClients注解,您可以快速实现对外部服务的调用。

       首先,在项目中添加Feign依赖。启动类上添加@EnableFeignClients注解,开启Feign支持。然后,定义服务接口、控制器和实现类,以Feign风格编写服务调用逻辑。Feign自动处理HTTP请求,手机聊天web源码简化了接口调用的编码。

       为了确保Feign能够正确处理请求头、认证信息等,您可以自定义RequestInterceptor实现逻辑,如添加Token等信息到请求头中。同时,提供配置类定义Feign客户端的配置参数,如超时时间、重试策略等,以增强服务调用的健壮性。

       总结,Spring Boot提供了原始HTTP客户端请求、`RestTemplate`和`Feign`三种方式调用外部接口,满足了不同场景下的需求。选择合适的方法,将有助于提高开发效率,确保应用的稳定性和可靠性。

神器 SpringDoc 横空出世!最适合 SpringBoot 的API文档工具来了

       之前在SpringBoot项目中,我一直在使用SpringFox提供的Swagger库。然而,当我浏览其官网时,发现已经有将近两年没有出新版本了。最近,当我升级到SpringBoot 2.6.x版本时,发现这个库的兼容性也越来越差,有些常用注解属性甚至被废弃了,而库中并没有提供替代方案。偶然间,我发现了一款名为SpringDoc的Swagger库,试用后发现效果非常不错,因此推荐给大家。

       SpringDoc是一款基于OpenAPI 3的API文档生成工具,可以与SpringBoot结合使用。在Github上,它已经获得了超过1.7K个Star,更新发布也相当频繁,可以说是一款比Swagger库更好用的工具。值得一提的是,SpringDoc不仅支持Spring WebMvc项目,还可以支持Spring WebFlux项目,甚至Spring Rest和Spring Native项目,功能非常强大。下面是一张SpringDoc的架构图。

       接下来,我将介绍SpringDoc的使用方法。我将以之前集成SpringFox的mall-tiny-swagger项目为例,将其改造为使用SpringDoc。

       首先,我们需要集成SpringDoc。在pom.xml中添加它的依赖即可,开箱即用,无需任何配置。

       从SpringFox迁移结合SpringSecurity使用测试常用配置

       SpringDoc还有一些常用的配置可以了解,更多配置可以参考官方文档。

       总结

       在SpringFox的Swagger库好久不出新版的情况下,迁移到SpringDoc确实是一个更好的选择。今天我体验了一把SpringDoc,确实很好用,与之前熟悉的用法相似,学习成本极低。而且SpringDoc能支持WebFlux之类的项目,功能也更加强大,对于使用SpringFox觉得有些卡手的朋友来说,迁移到SpringDoc是一个不错的选择!

       参考资料项目源码地址:github.com/macrozheng/m...

       来源:mp.weixin.qq.com/s/scit...

springdoc-openapi:帮助spring-boot自动生成API的开源库工具

       springdoc-openapi 是一个用于 Java 的开源库工具,它能够帮助 Spring Boot 项目自动生成 API 文档。这一库通过运行时检查应用并根据 Spring 配置、类结构以及各种注释来推断 API 语义,进而自动生成 JSON/YAML 和 HTML 格式的文档。

       借助 springdoc-openapi,开发者可以轻松地在生成的文档中添加补充信息,以提高 API 文档的丰富性和实用性。此库支持多种功能和特性,为 Spring Boot 开发者提供全面的 API 文档解决方案。

       主要功能包括:

       自动生成 API 文档

       支持 JSON/YAML 和 HTML 格式输出

       通过补充 swagger-api 注释增强文档

       springdoc-openapi 支持的版本包括:

       org.springdoc

       springdoc-openapi-ui

       开发者可通过利用这些库和版本,轻松地集成 springdoc-openapi 到其 Spring Boot 项目中,从而实现自动化的 API 文档生成,提升项目的可读性和易用性。

2.创建SpringBoot项目

       在完成上一章节的环境配置和lombok插件安装后,我们需要创建一个SpringBoot应用所需的父项目和三个子项目。

       以下是创建过程的详细步骤。

       1. 创建父项目:

       打开IDEA,点击“New Project”快速创建一个Maven项目。

       创建完成后,删除src源码目录,只保留pom.xml文件。

       2. 创建demo-api:

       demo-api层负责提供接口和参数,只需要提供jar包即可。使用Maven创建该项目。

       在项目上右键,选择“New” > “Module”,快速创建Maven项目,确保选择父项目。

       3. 创建demo-core:

       demo-core主要与数据库进行交互,不启动服务,只提供jar包。同样选择Maven项目。

       在项目上右键,选择“New” > “Module”,快速创建Maven项目,注意选择父项目。

       4. 创建demo-service:

       5. 结果:

       最终生成的文件目录结构如下:

       6. pom文件结构如下:

       父pom.xml

       api/pom.xml

       core/pom.xml

       service/pom.xml

springboot开源框架推荐,如若依,renrenfast,有从0搭建教程

       前后端分离低代码快速开发框架

       随着技术发展,前后端分离成为主流开发模式。此模式将前端与后端解耦,提高开发效率与维护性。若公司未切换此模式,建议学习以保持竞争优势。学习前后端分离需转变思路,避免沿用传统开发模式,导致产品不伦不类。本文章推荐以下开源框架,助您快速掌握前后端分离技术栈。

       听名字就知道这是个不错的项目,事实上确实不赖。NiceFish(美人鱼)是一个系列项目,目标是示范前后端分离的开发模式:前端浏览器、移动端、Electron环境中的各种开发模式;后端有两个版本:SpringBoot版本和SpringCloud版本,前端有Angular、React以及Electron等版本。

       微人事是一个前后端分离的人力资源管理系统,项目采用SpringBoot + Vue开发。项目打通前后端,并提供详尽文档,包括Spring Boot接口设计和前端Vue开发思路,是Java全栈学习资料。

       bootshiro是基于Spring Boot + Shiro + JWT的真正RESTful URL资源无状态认证权限管理系统的后端,前端usthe。区别于一般项目,该项目提供页面可配置式的、动态的RESTful api安全管理支持,并实现数据传输动态秘钥加密、jwt过期刷新、用户操作监控等功能,加固应用安全。

       JNPF快速开发平台,采用最新主流前后分离框架(SpringBoot + Mybatis-plus + Ant-Design + Vue3)。代码生成器依赖性低,提供灵活扩展能力,实现二次开发。以JNPF为代表的企业级低代码平台,支撑更高技术要求的应用开发,从数据库建模、Web API构建到页面设计,与传统开发模式无异,通过低代码可视化减少构建功能重复劳动。

       open-capacity-platform微服务能力开放平台,简称ocp,基于layui + springcloud的企业级微服务框架(用户权限管理、配置中心管理、应用管理等)。其核心目标是分离前后端,快速开发部署,学习简单,功能强大,提供快速接入核心接口能力,帮助企业搭建类似百度能力开放平台的框架。

       V部落是一个多用户博客管理平台,采用Vue + SpringBoot + ElementUI开发。项目优势在于简单,功能完整但简单,非常适合初学者。

       悟空CRM基于jfinal + vue + ElementUI的前后端分离CRM系统。jfinal了解即可,Vue + ElementUI组合值得深入学习,前后端交互方式亦值得学习。

       总结,以上开源项目提供丰富资源,助您在全栈开发路上更进一步。学习前后端分离技术,不仅提升个人技能,也能为企业带来高效与灵活性。推荐有空时学习这种开发方式,扩展知识面,提升技术能力。七个开源项目,助力您的全栈之旅。