我想从一个昂首阔步的yaml文件中获取uri,请求,响应正文,响应代码。
然后我可以将它们放入我自己的数据库中。 像这样:
我尝试通过在java程序中添加io.swagger.parser.SwaggerParser
来做某事。我认为swagger codegen的方式是正确的解决方案。但是我无法从codegen的源代码中获得任何东西。
这个问题是关于解析yaml文件并获取结构。 下一个问题:How to get request body and response body in JSON from a Swagger yaml
答案 0 :(得分:1)
最简单的方法是使用解析器来解析规范文件。 然后你可以迭代你感兴趣的元素并做你想做的事。
如果您的规范输入采用Swagger 2.0
格式(json或yaml),则可以使用此解析器:
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-parser</artifactId>
<version>1.0.34</version>
</dependency>
这是一个示例方法:
import java.util.Map;
import io.swagger.models.HttpMethod;
import io.swagger.models.Operation;
import io.swagger.models.Path;
import io.swagger.models.Response;
import io.swagger.models.Swagger;
import io.swagger.models.parameters.Parameter;
import io.swagger.parser.SwaggerParser;
public class UseParserExample {
public static void main(String[] args) {
Swagger swagger = new SwaggerParser().read("<path to your specification>");
Map<String, Path> paths = swagger.getPaths();
for (Map.Entry<String, Path> p : paths.entrySet()) {
Path path = p.getValue();
Map<HttpMethod, Operation> operations = path.getOperationMap();
for (Entry<HttpMethod, Operation> o : operations.entrySet()) {
System.out.println("===");
System.out.println("PATH:" + p.getKey());
System.out.println("Http method:" + o.getKey());
System.out.println("Summary:" + o.getValue().getSummary());
System.out.println("Parameters number: " + o.getValue().getParameters().size());
for (Parameter parameter : o.getValue().getParameters()) {
System.out.println(" - " + parameter.getName());
}
System.out.println("Responses:");
for (Map.Entry<String, Response> r : o.getValue().getResponses().entrySet()) {
System.out.println(" - " + r.getKey() + ": " + r.getValue().getDescription());
}
System.out.println("");
}
}
}
}
这是一个输出示例:
PATH: /user/{username}
Http method: PUT
Summary: Updated user
Parameters number: 2
- username
- body
Responses:
- 400: Invalid user supplied
- 404: User not found
===
PATH: /user/{username}
Http method: DELETE
Summary: Delete user
Parameters number: 1
- username
Responses:
- 400: Invalid username supplied
- 404: User not found