我曾经[SwaggerOperation(Tags = new[] { "GroupA" })]在 Swagger UI 的控制器中对我的操作进行分组。
更新到 3.0 后,不再考虑这一点,仅按控制器名称分组。
属性中“更改”的标签名称也不再生成到 Swagger JSON/YAML 中,只有控制器名称作为标签。
我无法在发行说明中找到有关此行为的重大更改的提示。
任何关于行为改变和/或我如何恢复它的见解将不胜感激。
我正在尝试从包含以下内容的 yaml 生成客户端
acceptParam:
name: Accept
type: string
required: true
in: header
description: Accepted Content-type. Should be set to application/json
contentTypeParam:
name: Content-Type
type: string
required: true
in: header
description: Request Content-type. Should be set to application/json
Run Code Online (Sandbox Code Playgroud)
这意味着accept和contentType将出现在生成的方法签名中。
最重要的是,我配置了这样的插件
<plugin>
<groupId>io.swagger.codegen.v3</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>3.0.18</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<phase>generate-sources</phase>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/swagger.yaml</inputSpec>
<language>java</language>
<configOptions>
<dateLibrary>joda</dateLibrary>
<localVarPrefix>localVar</localVarPrefix>
</configOptions>
<library>resttemplate</library>
<output>${project.build.directory}/generated-sources</output>
<modelPackage>com.example.client.model</modelPackage>
<apiPackage>com.example.client.api</apiPackage>
<generateApiTests>false</generateApiTests>
<generateModelTests>false</generateModelTests>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
尽管如此,之后mvn clean install
我越来越
错误:(130,31)java:变量accept已在方法中定义
生成的代码包含
public Response authorize(Request …Run Code Online (Sandbox Code Playgroud) 编辑:我现在收到新错误:我正在使用 SWAGGER 2.0
命令 : java -jar path/swagger-codegen-cli.jar generate -i http://petstore.swagger.io/v2/swagger.json -l dart -i dart -o /Users/path/folder/ToStoreClient
错误 :
[main] INFO io.swagger.parser.Swagger20Parser - reading from dart
[main] INFO io.swagger.parser.Swagger20Parser - reading from dart
[main] INFO io.swagger.codegen.ignore.CodegenIgnoreProcessor - No .swagger-codegen-ignore file found.
Exception in thread "main" java.lang.RuntimeException: missing swagger input or config!
at io.swagger.codegen.DefaultGenerator.generate(DefaultGenerator.java:764)
at io.swagger.codegen.cmd.Generate.run(Generate.java:299)
at io.swagger.codegen.SwaggerCodegen.main(SwaggerCodegen.java:35)
Run Code Online (Sandbox Code Playgroud)
我正在尝试从 swagger url 获取 DART 包。 https://github.com/swagger-api/swagger-codegen
我能够实现此处为 PETSTORE API 完成的所有包和步骤: https://github.com/swagger-api/swagger-codegen/tree/master/samples/client/petstore/dart-jaguar/swagger
但我无法从我的 MAC 中的 swagger url 创建 DART 包 我尝试安装 Homebrew …
我需要使用 NodeJS 开发 API,还需要为 API 开发文档。我与 swagger auto-gen 集成来创建 swagger.json。但是如果我使用routes.js,则 swagger.json 无法正确生成,如下所示
var express = require('express');
module.exports = function(app) {
var userController = require('../controller/userController');
var apiRouter = express.Router();
var routerV1 = express.Router();
var routerV2 = express.Router();
app.use('/admin', apiRouter);
apiRouter.use("/v1", routerV1);
apiRouter.use("/v2", routerV2);
routerV1.route('/users').get(userController.getUsersV1);
routerV2.route('/users').get(userController.getUsersV2);
}
Run Code Online (Sandbox Code Playgroud)
并将这些routes.js映射到swagger.js中
请建议生成 swagger.js 的最佳方法
我们需要为所有控制器创建路由文件吗?
我正在使用 Swagger 进行 OpenApi 3.0 的序列化。详细地说,我尝试使用以下格式序列化输入查询参数数组
?myArray=1,2,3,4
Run Code Online (Sandbox Code Playgroud)
我知道如何在 swagger 文档中实现这一点。只需设置parameter.explode=false即可
parameters:
- name: myArray
in: query
explode: false
...
Run Code Online (Sandbox Code Playgroud)
但我不知道如何在控制器类的 ASP.Net Core 3.1 中设置此参数属性,以正确生成我的 swagger 文档。我尝试了一些方法,例如实现基于IParameterFilter 的过滤器,但对我来说没有任何效果。
我有一个典型的RESTful端点,它返回一组模型,但生成的Ruby SDK返回一个新模型,Matters而不是模型数组.我可以破解生成的源代码返回,Array<Matter>但这是一个维护问题.如何指定我想Array<Matter>在YAML中返回?
paths:
/matters:
get:
...
responses:
200:
schema:
$ref: "#/definitions/Matters"
...
definitions:
Matter:
type: "object"
properties:
id:
type: "string"
description: "Database identifier of the object."
caseId:
type: "string"
description: "Database identifier of the Case object."
clientMatterNumber:
type: "string"
description: "Client/matter billing code."
judge:
type: "string"
description: "Initials of the presiding judge."
caseNumber:
type: "string"
description: "Canonical case number."
caseTitle:
type: "string"
description: "Canonical case title."
natureOfSuit:
type: "string"
description: "Judicial Conference designation of …Run Code Online (Sandbox Code Playgroud) 我想使用 Maven 插件swagger-codegen-maven-plugin版本生成我的 Java 类2.2.3。这是我的 pom.xml 文件及其配置:
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.2.3</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${basedir}/src/main/resources/swagger/project.yaml</inputSpec>
<language>java</language>
<configOptions>
<sourceFolder>src/gen/java/main</sourceFolder>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
Run Code Online (Sandbox Code Playgroud)
我的project.yaml 文件包含以下内容:
definitions:
Parent:
type: "object"
discriminator: "type"
required:
- type
properties:
id:
type: "integer"
format: "int64"
code:
type: "string"
ChildA:
allOf:
- $ref: "#/definitions/Parent"
- properties:
attributeA:
type: "string"
ChildB:
allOf:
- $ref: "#/definitions/Parent"
- properties:
attributeB:
type: "string"
Run Code Online (Sandbox Code Playgroud)
所有 3 个类均已生成,然后我想创建ChildA或ChildB使用 Web 服务。所以我的方法是:
@POST …Run Code Online (Sandbox Code Playgroud) 我使用命令安装了 Swagger CodeGen
npm install swagger-codegen -g
Run Code Online (Sandbox Code Playgroud)
所以我应该安装它,但是发生了一些错误/故障。每次进入
swagger-codegen -v
Run Code Online (Sandbox Code Playgroud)
我收到以下消息
'swagger-codegen' 不是内部或外部命令,也不是可运行的程序或批处理文件。
我不知道该怎么做。我应该如何解决这个问题?我正在尝试遵循教程,但讲师从不展示他如何安装程序。
在 GitHub 下,说明没有意义
先决条件 如果您正在寻找最新的稳定版本,您可以直接从 Maven.org 获取它(至少是 Java 7 运行时):
wget http://central.maven.org/maven2/io/swagger/swagger-codegen-cli/2.3.1/swagger-codegen-cli-2.3.1.jar -O swagger-codegen-cli.jar
java -jar swagger-codegen-cli.jar help
Run Code Online (Sandbox Code Playgroud)
对于 Windows 用户,您需要安装 wget 或者您可以在 PowerShell (3.0+) 中使用 Invoke-WebRequest,例如
Invoke-WebRequest -OutFile swagger-codegen-cli.jar http://central.maven.org/maven2/io/swagger/swagger-codegen-cli/2.3.1/swagger-codegen-cli-2.3.1.jar
Run Code Online (Sandbox Code Playgroud)
我应该把这些放在命令行中吗?试过了,没用
我正在使用 gRPC 服务生成 swagger json 文件protoc-gen-swagger。输出 json 是使用空响应示例生成的,我想将响应示例添加到定义中,以便它自动填充到生成的 json 中。
这是我目前的定义。
service UserService {
rpc GetUser (GetUserRequest) returns (UserResponse){
option (google.api.http) = {
get: "/api/v1/user/{username}"
response_body: "*"
};
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_operation) = {
description: "Returns user object";
operation_id: "get_user";
summary: "Get User";
};
}
}
message GetUserRequest {
string username = 1;
}
message UserResponse {
User user = 1;
}
message User {
string first_name = 1;
string last_name = 2;
string username = 3;
}
Run Code Online (Sandbox Code Playgroud)
当我使用命令生成 swagger …
我有一个从 Swagger 自动生成的 API,其中响应对象有一个 binary field MyBinary。MyBinary在 Swagger 中定义为:
MyReponse:
type: object
properties:
MyBinary:
type: string
format: binary
Run Code Online (Sandbox Code Playgroud)
这将生成一个 C# 对象:
pubic class MyResponse
{
public byte[] MyBinary {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
当我在 Postman 中调用这个 EP 时,我看到它MyBinary以 base64 编码的字符串形式返回:
{
"MyBinary": "....ydCB1bmQgUXVhcms="
}
Run Code Online (Sandbox Code Playgroud)
里面有一个图像。我希望该字段包含类似?PNG ???? IHDR???È???È?.....
为什么以及在哪里进行 base64 编码?我找不到有关该主题的体面 Swagger 描述或 .net 文档。
问题是我们有 3 个 API 客户端:iOS、Android 和 Web。iOS 成功地Data从 Swagger生成类型,并以某种方式设法自动将 base64 加载到其中,但 Android (Java) 和 Web (TypeScript) 抛出异常,表示他们期望二进制文件但收到字符串。
有人可以向我解释一下,为什么 byte[] 在 .net …
使用扬鞭/ OpenAPI的(随后招摇,代码生成),我一直没能找到有什么区别应该是之间
这是从https://swagger.io/specification/#responsesObject获取的 (第一个示例,json格式)
"responses" : {
"200": {
"description": "a pet to be returned",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Pet"
} } } } }
Run Code Online (Sandbox Code Playgroud)
和
"responses" : {
"200": {
"description": "a pet to be returned",
"schema": {
"$ref": "#/components/schemas/Pet"
} } }
Run Code Online (Sandbox Code Playgroud)
我已将此示例放入一个简单的json swagger规范(json)中,并运行Swagger-Codegen(python,flask)来生成我的控制器和模型。Yaml似乎是首选的内部表示形式,因此当生成器运行时,它将创建一个yaml文件。
对于前者,响应类型为“无”
responses:
200:
description: "a pet to be returned"
Run Code Online (Sandbox Code Playgroud)
而后者产生了我认为我应该期望的:
responses:
200:
description: "a pet to be returned"
schema:
$ref: "#/components/schemas/Pet"
Run Code Online (Sandbox Code Playgroud)
例如,似乎使用以下语法从第一个语法中省略了模式 Content
内容是什么意思?我在示例中缺少什么,为什么Content结果没有返回Non-None返回类型和相应的模式。
请注意SwaggerCodgen:生成的代码与生成的yaml所说的完全匹配,因此在这里我没有包括任何这些细节
目前我有一个项目,它使用swagger-codegen-maven-plugin生成带有delegatePattern.
pom.xml:
[...]
<plugin>
<groupId>io.swagger</groupId>
<artifactId>swagger-codegen-maven-plugin</artifactId>
<version>2.3.1</version>
<executions>
<execution>
<id>generate-api-v1</id>
<phase>generate-sources</phase>
<goals>
<goal>generate</goal>
</goals>
<configuration>
<inputSpec>${project.basedir}/src/main/resources/specs/v1.yaml</inputSpec>
<language>spring</language>
<apiPackage>test.foo.bar.v1</apiPackage>
<modelPackage>test.foo.bar.v1.v1.model</modelPackage>
<generateSupportingFiles>false</generateSupportingFiles>
<configOptions>
<java8>true</java8>
<dateLibrary>java8</dateLibrary>
<delegatePattern>true</delegatePattern>
<useOptional>true</useOptional>
<useBeanValidation>true</useBeanValidation>
</configOptions>
</configuration>
</execution>
</executions>
</plugin>
[...]
Run Code Online (Sandbox Code Playgroud)
目前它生成这样的控制器接口:
public interface FooApi {
FooDelegate getDelegate();
@ApiOperation(value = "", nickname = "fooAction", notes = "", response = String.class)
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success", response = String.class)
})
@RequestMapping(value = "/fooAction",
produces = { "text/plain" },
method = RequestMethod.GET) …Run Code Online (Sandbox Code Playgroud) swagger-codegen ×12
swagger ×9
yaml ×3
asp.net-core ×2
c# ×2
java ×2
.net-core ×1
dart ×1
flutter ×1
grpc ×1
grpc-go ×1
http ×1
jakarta-ee ×1
node.js ×1
openapi ×1
pom.xml ×1
spring-boot ×1
swagger-2.0 ×1
swagger-3.0 ×1
swagger-ui ×1
swashbuckle ×1