本篇文章给大家谈谈Api接口自动生成,以及自制api接口对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
今天给各位分享Api接口自动生成的知识,其中也会对自制api接口进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
如何使 WebAPI 自动生成漂亮又实用在线API文档
1.1 SwaggerUI
SwaggerUI 是一个简单的Restful API 测试和文档工具。简单、漂亮、易用(官方demo)。通过读取JSON 配置显示API. 项目本身仅仅也只依赖一些 html,css.js静态文件. 你可以几乎放在任何Web容器上使用。
1.2 Swashbuckle
Swashbuckle 是.NET类库,可以将WebAPI所有开放的控制器方法生成对应SwaggerUI的JSON配置。再通过SwaggerUI 显示出来。类库中已经包含SwaggerUI 。所以不需要额外安装。
2.快速开始
创建项目 OnlineAPI来封装百度音乐服务(示例下载) ,通过API可以搜索、获取音乐的信息和播放连接。
我尽量删除一些我们demo中不会用到的一些文件,使其看上去比较简洁。
WebAPI 安装 Swashbuckle
Install-Package Swashbuckle
代码注释生成文档说明。
Swashbuckle 是通过生成的XML文件来读取注释的,生成 SwaggerUI,JSON 配置中的说明的。
安装时会在项目目录 App_Start 文件夹下生成一个 SwaggerConfig.cs 配置文件,用于配置 SwaggerUI 相关展示行为的。如图:
将配置文件大概99行注释去掉并修改为
c.IncludeXmlComments(GetXmlCommentsPath(thisAssembly.GetName().Name));
并在当前类中添加一个方法
/// <summary
/// </summary
/// <param name="name"</param
/// <returns</returns
protected static string GetXmlCommentsPath(string name)
{
return string.Format(@"{0}\bin\{1}.XML", AppDomain.CurrentDomain.BaseDirectory, name);
}
紧接着你在此Web项目属性生成选卡中勾选 “XML 文档文件”,编译过程中生成类库的注释文件
添加百度音乐 3个API
访问 lt;youhost/swagger/ui/index,最终显示效果
我们通过API 测试API 是否成功运行
3.添加自定义HTTP Header
在开发移动端 API时常常需要验证权限,验证参数放在Http请求头中是再好不过了。WebAPI配合过滤器验证权限即可
首先我们需要创建一个 IOperationFilter 接口的类。IOperationFilter
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http;
using System.Web.Http.Description;
using System.Web.Http.Filters;
using Swashbuckle.Swagger;
namespace OnlineAPI.Utility
{
public class HttpHeaderFilter : IOperationFilter
{
public void Apply(Operation operation, SchemaRegistry
schemaRegistry, ApiDescription apiDescription)
{
if (operation.parameters == null) operation.parameters = new
List<Parameter();
var filterPipeline =
apiDescription.ActionDescriptor.GetFilterPipeline();
//判断是否添加权限过滤器
var isAuthorized = filterPipeline.Select(filterInfo =
filterInfo.Instance).Any(filter = filter is IAuthorizationFilter);
//判断是否允许匿名方法
var allowAnonymous =
apiDescription.ActionDescriptor.GetCustomAttributes<AllowAnonymousAttribute().Any();
if (isAuthorized !allowAnonymous)
{
operation.parameters.Add(new Parameter
{
name = "access-key",
@in = "header",
description = "用户访问Key",
required = false,
type = "string"
});
}
}
}
}
在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码
c.OperationFilter<HttpHeaderFilter();
添加Web权限过滤器
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text;
using System.Web;
using System.Web.Http;
using System.Web.Http.Controllers;
using Newtonsoft.Json;
namespace OnlineAPI.Utility
{
/// <summary
///
/// </summary
public class AccessKeyAttribute : AuthorizeAttribute
{
/// <summary
/// 权限验证
/// </summary
/// <param name="actionContext"</param
/// <returns</returns
protected override bool IsAuthorized(HttpActionContext actionContext)
{
var request = actionContext.Request;
if (request.Headers.Contains("access-key"))
{
var accessKey = request.Headers.GetValues("access-key").SingleOrDefault();
//TODO 验证Key
return accessKey == "123456789";
}
return false;
}
/// <summary
/// 处理未授权的请求
/// </summary
/// <param name="actionContext"</param
protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
{
var content = JsonConvert.SerializeObject(new {State = HttpStatusCode.Unauthorized});
actionContext.Response = new HttpResponseMessage
{
Content = new StringContent(content, Encoding.UTF8, "application/json"),
StatusCode = HttpStatusCode.Unauthorized
};
}
}
}
在你想要的ApiController 或者是 Action 添加过滤器
[AccessKey]
最终显示效果
4.显示上传文件参数
SwaggerUI 有上传文件的功能和添加自定义HTTP Header 做法类似,只是我们通过特殊的设置来标示API具有上传文件的功能
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Http.Description;
using Swashbuckle.Swagger;
namespace OnlineAPI.Utility
{
/// <summary
///
/// </summary
public class UploadFilter : IOperationFilter
{
/// <summary
/// 文件上传
/// </summary
/// <param name="operation"</param
/// <param name="schemaRegistry"</param
/// <param name="apiDescription"</param
public void Apply(Operation operation, SchemaRegistry schemaRegistry, ApiDescription apiDescription)
{
if (!string.IsNullOrWhiteSpace(operation.summary) operation.summary.Contains("upload"))
{
operation.consumes.Add("application/form-data");
operation.parameters.Add(new Parameter
{
name = "file",
@in = "formData",
required = true,
type = "file"
});
}
}
}
}
在 SwaggerConfig.cs 的 EnableSwagger 配置匿名方法类添加一行注册代码
c.OperationFilter<UploadFilter();
API 文档展示效果
MeterSphere调用api接口定义进行用例场景自动化
参考上一篇文章,写的接口自定义。这篇文章,可以直接调用前面的接口定于作为场景case
1、新建场景
2、选择接口列表导入,选中接口定义,复制该case进入场景中
3、选择环境后,点击执行后,返回200正常,则点击保存
4、点击保存,场景case添加一条api定义完成,如需要更多,也可以持续添加。场景导入,自定义请求均可
腾讯短链接url生成接口_url短网址生成
类似于 "http://url.cn/xxxx" 格式的url短网址是用腾讯短链接接口生成的,相较于新浪短链接的广泛应用场景,腾讯短链接更多的是应用于微信中,给大家分享一个腾讯短链接url生成接口,大家试试。
1、在线使用
将API接口地址中 "http://www.baidu.com" 的部分换成需要缩短的长网址,然后直接复制,前往浏览器中粘贴打开即可生成了。
2、接口调用
如果觉得在线生成的操作比较麻烦,或者需要生成的量比较大的话,也可以直接对接程序调用API自动生成。对接方法可参考下方
1、调用api接口时,只需将 “http://www.baidu.com”替换成需要缩短的长网址即可。
2、API接口支持长链接中带参数,当长链接中出现 符号时,要用 %26 代替(或者使用url编码格式),否则可能会导致参数丢失。
3、长链接必须要以http(s)://开头,否则可能会导致生成失败或者生成的短网址无法访问等清理。
4、上文提到的API接口,Api接口自动生成我使用大半年了,一直是比较稳定的,大家可以试试,觉得不错记得收藏一下,以免丢失找不到。
1、生成的短链接,为什么原来的参数没有生效Api接口自动生成?
答Api接口自动生成:因为长链接中含有特殊字符,需要使用url编码。
2、接口没有返回结果,是什么情况?
答:有些时候接口返回数据有延迟,超时了会生成失败,就无法返回结果了Api接口自动生成;或者是因为原链接被封了。
3、生成的短链接有效期是多久?有没有访问次数限制?
答:生成的腾讯短链接都是永久有效的,没有访问次数限制,可以放心使用。
如何优雅的“编写”api接口文档
1. 拼写要准确
接口函数一旦发布就不能改了,要保持兼容性,拼写错误也不能改了,所以要仔细检查拼写,否则会被同行嘲笑很多年。
著名悲剧:unix 的 creat
2. 不仅是英文单词不要拼错,时态也不要错。
比如:
返回bool的判断函数,单数要用 is 复数要用are,这样你的命名就和文档中的描述保持了一致性。
表示状态的变量或者函数要注意时态,比如 onXxxxChanged 表示xxx已经变化了,isConnecting表示正在连接。
正确的时态可以给使用者传递更丰富的信息。
3. 函数最好是动宾结构
动宾结构就是 doSomething,这样的函数命名含义明确
比如: openFile, allocBuffer, setName
如果这个函数的动词宾语就是这个对象本身,那么可以省略掉宾语
4. 属性命名最好是定语+名词
比如 fileName, maxSize, textColor
5. 不要用生僻单词,这不是秀英语的地方,也不要用汉语拼音
比如:rendezvous,估计大多数人要去查词典才知道什么意思,这个词源自法语,是约会的意思。
Symbian OS里有个用它命名的函数,开发Symbian的是英国人,也许人家觉得很平常吧,反正我是查了词典才知道的。
6. 不要自己发明缩写
除非是约定俗成已经被广泛使用的缩写,否则老老实实用完整拼写。
坏例子: count-cnt, manager-mngr password-pw button-btn
现代的IDE都有很好的自动完成功能,名字长一点没关系的,可读性更重要。
7. 保持方法的对称性,有些方法一旦出现就应该是成对的,
比如 有open就要有close,有alloc就要有free,有add就要有remove,这些单词基本是固定搭配的,使用者就很容易理解。
如果 open对应clear就有点让人困惑了。
简单获取新浪短网址API接口的方法(附PHP请求示例)
新浪短网址api是新浪官方对外公开的短网址生成接口,可以将冗长的链接地址缩短生成 t.cn 格式的短链接,下面分享一个获取新浪短网址API接口的方法以及接口请求方法。
1、在线使用
将API地址中 "http://www.baidu.com" 的部分换成自己的长网址,然后复制前往浏览器中粘贴打开就能生成了。
2、请求接口
如果嫌在线生成的流程很麻烦,可以将API接口对接到程序中请求生成,请求示例如下。
PHP请求示例:
Java请求示例:
Python请求示例:
1、调用API接口时,只需将 “http://www.baidu.com”换成需要缩短的长链接即可。
2、接口支持链接中带参数,但要注意的是当链接中出现 符号时,请用 %26 代替(或者使用url编码),否则参数可能会丢失。
3、更换链接时,必须要以http(s)://开头,否则可能会导致短网址生成失败或者生成的短网址无法跳转访问原网站。
4、上文提到的新浪短网址API接口,经测试都是比较稳定的,觉得好用记得收藏一下,以免丢失。
1、长链接转换后,为什么结尾的参数丢失了?
答:因为长链接中含有特殊字符,需要将url编码后再使用接口生成。
2、接口没有返回结果,是什么情况?
答:有些时候接口返回数据会有延迟,超时未返回即生成失败,也就不会返回结果;或者是因为原链接被封了。
3、生成的短链接有效期是多久?有没有访问次数限制?
答:生成的t.cn短链接是永久有效的,没有点击次数限制,可以放心使用。
关于Api接口自动生成和自制api接口的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
Api接口自动生成的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于自制api接口、Api接口自动生成的信息别忘了在本站进行查找喔。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~