我正在开发REST API.在开发过程中我使用postman(chrome扩展)来使用和记录我的API.精彩的工具,我有大部分的端点.但是,当我们接近发布时,我想以夸张的方式记录这个API,我该怎么做?有没有办法可以根据邮递员出口产生招摇?
我正试图在我的本地计算机上my.json用swagger-ui打开我自己生成的swagger规范文件.
所以我下载了最新的标签v2.1.8-M1并解压缩了.然后我进入子文件夹dist并将文件复制my.json到其中.现在我打开了index.html,想要探索my.json.这里问题就出现了:
如果我输入本地路径,它将始终以包含该路径的当前URL为前缀index.html.因此我无法打开我的文件.我没有成功地尝试了以下所有组合:
my.json 导致 file:///D:/swagger-ui/dist/index.html/my.jsonfile:///D:/swagger-ui/dist/my.json 导致 file:///D:/swagger-ui/dist/index.html/file:///D:/swagger-ui/dist/my.json我在Swagger文件中有一个API参考.我想创建一个非常简单的模拟服务器,以便在我调用时:
mymockurl.com/users 它将返回一个预定义的json(无需连接到数据库).
最简单的方法是什么?我不是后躯.
我使用Swagger来记录我的REST服务.我的一项服务需要上传CSV文件.在JSON文件中为参数部分指定以下属性后,我可以在我的招摇页面上获取文件上载选项.
{
"name": "File",
"description": "The file in zip format.",
"paramType": "body",
"required": true,
"allowMultiple": false,
"dataType": "file"
}
Run Code Online (Sandbox Code Playgroud)
但是当我选择一个文件然后点击我收到错误NS_ERROR_XPC_BAD_OP_ON_WN_PROTO:在jquery-1.8.0.min.js(第2行)中对WrappedNative原型对象进行非法操作时,它会不断处理,我没有得到任何响应.
我有一个Web API(ASP.NET核心),我正在尝试调整swagger来进行调用.这些调用必须包含Authorization标头,我正在使用Bearer身份验证.来自Postman等第三方应用的电话也没问题.但我遇到了设置swagger标头的问题(由于某种原因我没有收到标头).这就是现在的样子:
"host": "localhost:50352",
"basePath": "/" ,
"schemes": [
"http",
"https"
],
"securityDefinitions": {
"Bearer": {
"name": "Authorization",
"in": "header",
"type": "apiKey",
"description": "HTTP/HTTPS Bearer"
}
},
"paths": {
"/v1/{subAccountId}/test1": {
"post": {
"tags": [
"auth"
],
"operationId": "op1",
"consumes": ["application/json", "application/html"],
"produces": ["application/json", "application/html"],
"parameters": [
{
"name": "subAccountId",
"in": "path",
"required": true,
"type": "string"
}
],
"security":[{
"Bearer": []
}],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "BadRequest",
"schema": {
"$ref": "#/definitions/ErrorResponse"
}
}, …Run Code Online (Sandbox Code Playgroud) 我有一个REST服务来记录,其中一些接受简单的数组,如:
[
{ "name":"a" },
{ "name":"b" },
{ "name":"c" }
]
Run Code Online (Sandbox Code Playgroud)
我如何在Swagger模型部分中描述这一点?我只能创建'命名数组'
model {
properties: { "arr": { "type":"array", ......
Run Code Online (Sandbox Code Playgroud)
但它描述了这样的数据:
"arr": [
{ "name":"a" },
{ "name":"b" },
{ "name":"c" }
]
Run Code Online (Sandbox Code Playgroud) 使用Web API并使用swashbuckle生成swagger文档,我在两个不同的命名空间中定义了两个具有相同名称的不同类.当我在浏览器中打开swagger页面时说
冲突的schemaIds:为类型A和B检测到重复的schemaId.请参阅配置设置 - "UseFullTypeNameInSchemaIds"以获取潜在的解决方法
完整消息:
500:{"消息":"发生了错误.","ExceptionMessage":"冲突的schemaIds:为类型A和B检测到重复的schemaIds.请参阅配置设置 - \"UseFullTypeNameInSchemaIds \"以获取潜在的解决方法","ExceptionType ":"System.InvalidOperationException","StackTrace":"在Swashbuckle.Swagger.SchemaRegistry.CreateRefSchema(类型类型)\ r \n,在Swashbuckle.Swagger.Swagger.SchemaRegistry.CreateInlineSchema(类型类型)\ r \n在Swashbuckle.Swagger. SchemaRegistry.b__1f(JsonProperty prop)\ r \n在System.Linq.Enumerable.ToDictionary [TSource,TKey,TElement](IEnumerable
1 source, Func2 keySelector,Func2 elementSelector, IEqualityComparer1 comparer )\ r \n在Swashbuckle.Swagger.SchemaRegistry.CreateObjectSchema(JsonObjectContract jsonContract) )\ r \n at Swashbuckle.Swagger.SchemaRegistry.CreateDefinitionSchema(Type type)\ r \n at Swashbuckle.Swagger.SchemaRegistry.GetOrRegister(Type type)\ r \n at Swashbuckle.Swagger.SwaggerGenerator.CreateOperation(ApiDescription apiDesc,SchemaRegistry) schemaRegistry)\ r \n在Swashbuckle.Swagger.SwaggerGenerator.CreateP athItem(IEnumerable的1 apiDescriptions, SchemaRegistry schemaRegistry)\r\n at Swashbuckle.Swagger.SwaggerGenerator.<>c__DisplayClass7.<GetSwagger>b__4(IGrouping2组)\ r \n在System.Linq.Enumerable.ToDictionary [TSource,TKEY的,TElement](IEnumerable的1 source, Func2的KeySelector,Func键2 elementSelector, IEqualityComparer1比较器)\ r \n在Swashbuckle.Swagger.SwaggerGenerator.GetSwagger(字符串使用rootUrl,字符串apiVersion)\ r \n在Swashbuckle.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage请求,CancellationToken cancellationToken)\ r \n在System.Net.Http.MttageInvoker.SendAsync(HttpRequestMessage请求,CancellationToken cancellationToken)\ …
我从一些JSON文件创建了一个API规范,我试图测试文件是否根据API规范进行验证.
有一些很好的工具可以验证JSON Schema,但我没有机会找到一个工具来验证Swagger中创建的规范(用于创建API模式的工具).我找到的唯一解决方案是在Swagger-Editor中生成客户端/服务器,这非常麻烦.
是否已有一个现有工具来验证针对Swagger Schema的JSON?
我在我的应用程序中嵌入了swagger ui.当我在本地运行我的节点应用程序时,UI工作得很好.
然而,当我将UI部署到我的"真正的"服务器时,我在我的招摇ui的右下方得到一个错误图像:

我确信这是我正在做的事情,它搞砸了,但我不知道.当我通过http访问swagger ui时,再次在本地工作.
但是当我部署时,我通过apache运行并通过https服务,我看到一个错误.更糟糕的是,在部署时,我的"试用"调用都没有.似乎没有提出请求.
看起来UI使用我的swagger.json调用验证器,但该调用在本地工作.
我究竟做错了什么?
当我点击错误图标时,我得到:

我有一个Keycloak受保护的后端,我想通过swagger-ui访问.Keycloak本身提供了oauth2隐式和accessCode流程,但我都没有工作.目前Keycloak的文档缺乏这一点,哪些url应该用于swagger.json中的authorizationUrl和tokenUrl.
Keycloak中的每个领域都通过访问http://keycloak.local/auth/realms/REALM/.well-known/openid-configuration提供了大量的配置URL列表.
此外,我试图通过添加以下行直接在swagger-ui index.html中集成keycloak js-client:
<script src="keycloak/keycloak.js"></script>
<script>
var keycloak = Keycloak('keycloak.json');
keycloak.init({ onLoad: 'login-required' })
.success(function (authenticated) {
console.log('Login Successful');
window.authorizations.add("oauth2", new ApiKeyAuthorization("Authorization", "Bearer " + keycloak.token, "header"));
}).error(function () {
console.error('Login Failed');
window.location.reload();
}
);
</script>
Run Code Online (Sandbox Code Playgroud)
"登录成功"后我也尝试了类似的东西
swaggerUi.api.clientAuthorizations.add("key", new SwaggerClient.ApiKeyAuthorization("Authorization", "Bearer " + keycloak.token, "header"));
Run Code Online (Sandbox Code Playgroud)
但它也行不通.
有什么建议我如何能够在swagger中集成keycloak auth?
swagger-ui ×10
swagger ×8
swagger-2.0 ×3
c# ×2
asp.net-core ×1
file ×1
jboss-tools ×1
json ×1
jsonschema ×1
keycloak ×1
oauth ×1
openapi ×1
postman ×1
rest ×1
swashbuckle ×1