swagger

ABP Vnext 3.0 Swagger增加注释配置

雨燕双飞 提交于 2020-08-17 14:48:54
1.打开Application层生产按钮,生成XML备注文件,尽量使用相对文件目录方便后期查找 2.在zxmallHttpApiHostModule模组下配置services.AddSwaggerGen 增加options.IncludeXmlComments(path); var path="刚才生产的文件路径" 然后F5就可以开启注释模式啦 来源: oschina 链接: https://my.oschina.net/u/4261553/blog/4500044

基于 abp vNext 和 .NET Core 开发博客项目

半世苍凉 提交于 2020-08-17 12:52:18
上一篇文章( https://www.cnblogs.com/meowv/p/12916613.html )使用自定义仓储完成了简单的增删改查案例,有心的同学可以看出,我们的返回参数一塌糊涂,显得很不友好。 在实际开发过程中,每个公司可能不尽相同,但都大同小异,我们的返回数据都是包裹在一个公共的模型下面的,而不是直接返回最终数据,在返回参数中,显示出当前请求的时间戳,是否请求成功,如果错误那么错误的消息是什么,状态码(状态码可以是我们自己定义的值)等等。可能显得很繁琐,没必要,但这样做的好处毋庸置疑,除了美化了我们的API之外,也方便了前端同学的数据处理。 我们将统一的返回模型放在 .ToolKits 层中,之前说过这里主要是公共的工具类、扩展方法。 新建一个Base文件夹,添加响应实体类 ServiceResult.cs ,在Enum文件夹下单独定义一个 ServiceResultCode 响应码枚举,0/1。分别代表 成功和失败。 //ServiceResultCode.cs namespace Meowv.Blog.ToolKits.Base.Enum { /// <summary> /// 服务层响应码枚举 /// </summary> public enum ServiceResultCode { /// <summary> /// 成功 /// </summary>

springBoot集成swagger2

烂漫一生 提交于 2020-08-17 05:24:19
1 背景 springBoot作为微服务首选框架,为其他服务提供大量的接口服务。接口对接方需要实时最近的接口文档。 swagger可以通过 代码和注释 自动为web项目生成在线文档,这里使用swagger。 swagger官网地址: https://swagger.io/ 2 使用 2.1 maven依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> 依赖说明: (1)springfox-swagger2 检测spring的web请求信息,生成检测结果( json格式 )。 (2)springfox-swagger-ui 根据springfox-swagger2生成的数据,生成 可视化 的友好页面。 2.2 配置代码 Springfox提供Docket对象,为其设置相关属性,将其注册成为spring的bean后

Spring的学习与实战

十年热恋 提交于 2020-08-17 05:19:52
目录 一、Spring起步 学习路线图 Spring的基础知识 什么是Spring Spring框架核心模块 SpringBoot 第一个Spring应用DEMO 编写自己的第一个SpringMVC例子 尝试使用Spring Boot DevTools Spring起步小结 二、基于SpringMVC开发web应用 创建数据模型 创建业务逻辑 创建控制器 设计视图模板 运行Web应用 表单校验 展现校验错误 基于SpringMVC开发web应用小结 三、实现数据持久化 数据库 建立用户信息登记表 Web应用项目集成mysql 使用JdbcTemplate实现数据持久化 再次运行Web应用 实现数据持久化小结 四、使用Spring Data实现数据持久化 Spring Data 四、使用Spring Data JPA持久化数据 添加JPA starter依赖 修改实体类,添加JPA映射注解 声明JPA repository接口 服务层repository 再次运行Web应用 自定义JPA repository 服务层增加查找接口 控制器增加用户查找功能 视图层增加用户查找页面 查找功能测试 使用Spring Data实现数据持久化小结 五、使用Spring Security安全框架保护web应用 启用Spring Security Spring Security的基本登录认证

Java 在PDF中添加文本水印、图片水印(基于Spire.Cloud.SDK for Java)

て烟熏妆下的殇ゞ 提交于 2020-08-17 04:36:32
Spire.Cloud.SDK for Java提供了接口pdfWartermarkApi可用于添加文本水印addTextWartermark()和图片水印addImageWartermark()到PDF文档。文本将通过Java示例介绍具体实现方法。首先请参考以下步骤准备程序运行环境: 一、导入jar 文件。 (有2种方式) (推荐)方式1. 创建Maven项目程序,通过maven仓库下载导入。 以IDEA为例,新建Maven项目,在xml文件中配置maven仓库路径,并指定spire.cloud.sdk的依赖,如下: < repositories > < repository > < id > com.e-iceblue </ id > < name > cloud </ name > < url > http://repo.e-iceblue.cn/repository/maven-public/ </ url > </ repository > </ repositories > < dependencies > < dependency > < groupId > cloud </ groupId > < artifactId > spire.cloud.sdk </ artifactId > < version > 3.5.0 </ version > </

API接口设计,通信协议的整体架构

百般思念 提交于 2020-08-16 12:05:53
刚开始接触的时候,并没有考虑太多,就想提供URL,APP端通过该URL进行查询、创建、更新等操作即可。但再对相关规范进行了解后,才发现,API的设计并没有那么简单,远远不是URL的问题,而是一个通信协议的整体架构 1. 使用GET、POST、PUT、DELETE这几种请求模式 请求模式也可以说是动作、数据传输方式,通常我们在web中的form有GET、POST两种,而在HTTP中,存在下发这几种。 GET (选择):从服务器上获取一个具体的资源或者一个资源列表。 POST (创建): 在服务器上创建一个新的资源。 PUT(更新):以整体的方式更新服务器上的一个资源。 PATCH (更新):只更新服务器上一个资源的一个属性。 DELETE(删除):删除服务器上的一个资源。 HEAD : 获取一个资源的元数据,如数据的哈希值或最后的更新时间。 OPTIONS:获取客户端能对资源做什么操作的信息。 常见的请求参数 比如在数据过多, 需要对数据进行分页请求的时候, 我们应该统一 API 请求参数. 常见的有这些. limit=10 指定返回记录的数量 offset=10 指定返回记录的开始位置。 page=2&per_page=100 指定第几页,以及每页的记录数。 sortby=name&order=asc 指定返回结果按照哪个属性排序,以及排序顺序。 animal_type_id=1

接口工具Apifox

强颜欢笑 提交于 2020-08-16 08:11:31
最近发现一款接口测试工具--apifox,我我们很难将它描述为一款接口管理工具 或 接口自测试工具。 官方给了一个简单的公式,更能说明apifox可以做什么。 Apifox = Postman + Swagger + Mock + JMeter Apifox的特点: 接口文档定义: Apifox 遵循 OpenApi 3.0 (原 Swagger)、JSON Schema 规范的同时,提供了非常好用的可视化文档管理功能,零学习成本,非常高效。 接口调试: Postman 有的功能,比如环境变量、预执行脚本、后执行脚本、Cookie/Session 全局共享 等功能,Apifox 都有,并且和 Postman 一样高效好用。 数据 Mock: 内置 Mock.js 规则引擎,非常方便 mock 出各种数据,并且可以在定义数据结构的同时写好 mock 规则。支持添加“期望”,灵活配置根据参数值返回不同数据内容。最重要的是 Apifox 零配置 即可 Mock 出非常人性化的数据,具体在本文后面介绍。 接口自动化测试: 提供接口集合测试,可以通过选择接口(或接口用例)快速创建测试集。目前接口自动化测试更多功能还在开发中,敬请期待!目标是: JMeter 有的功能基本都会有,并且要更好用。 团队协作: Apifox 天生就是为团队协作而生的,接口云端实时同步更新,成熟的团队/项目

Asp.NetCore3.1 WebApi中模型验证

时光毁灭记忆、已成空白 提交于 2020-08-16 06:04:05
前言    不管是前端,还是后端,做数据合法性验证是避免不了的,这边文章就记录一下Asp.NetCore3.1 WebApi中的模型验证; 传统写法--不使用模型验证    来,先上图:    我相信,应该绝大多数人都这样写过,反正我是,现在有时候也写,不是说这样不行, 根据业务场景进行评估,看是否合适; 这里就那用户维护新增举个例;如上图, 判断参数合法性一堆,这显得这个接口方法比较臃肿;   使用模型验证    先上图   首先在参数模型上打上注解       接口方法优化       如上图,是不是看着这个方法比较清晰了,没那么臃肿了,代码量似乎也就减少了,出Bug的概率是不是也降低了,哈哈;   调用结果,我这里什么都没传,返回400及校验消息(消息可以自定义)   如上图,当参数都为空时,在没进Action之前就被拦截了,并且返回400和校验的错误消息, 这是.NetCore自动校验了,我们可以将其关闭,让访问到Action中来,如下:       在运行进行API调用,同样传递不合法参数,这下就会走到Action中了,如下:    显然,通过这样的方式,可以管控到验证结果,并根据验证结果返回对应信息,但是,这样会需要在每个控制器中需要验证的Action方法中进行判断和处理,这无疑使得代码的复用性不好,写重复的代码,所以我们需要自己控制模型验证结果

(十一)SpringBoot导出excel文件

∥☆過路亽.° 提交于 2020-08-16 03:35:16
一:添加POI依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency>    二:创建Excel实体类 package com.example.demo.model; import java.io.Serializable; import java.util.List; public class ExcelData implements Serializable { private static final long serialVersionUID = 6133772627258154184L; /** * 表头 */ private List<String> titles; /** * 数据 */ private List<List<Object>> rows; /** * 页签名称 */ private String name; public List<String> getTitles() { return titles; } public void setTitles(List<String> titles) { this.titles = titles; } public List

源码剖析@ApiImplicitParam对@RequestParam的required属性的侵入性

感情迁移 提交于 2020-08-15 23:46:30
问题起源 使用SpringCloud构建项目时,使用Swagger生成相应的接口文档是推荐的选项,Swagger能够提供页面访问,直接在网页上调试后端系统的接口, 非常方便。最近却遇到了一个有点困惑的问题,演示接口示例如下(原有功能接口带有业务实现逻辑,这里简化了接口): /** * @description: 演示类 * @author: Huang Ying **/ @Api(tags = "演示类") @RestController @Slf4j public class DemoController { @ApiOperation(value = "测试接口") @ApiImplicitParams({ @ApiImplicitParam(name = "uid", value = "用户ID", paramType = "query", dataType = "Long") }) @RequestMapping(value = "/api/json/demo", method = RequestMethod.GET) public String auth(@RequestParam(value = "uid") Long uid) { System.out.println(uid); return "the uid: " + uid; } }