我有一个带有 Swagger API 的项目,其服务器代码是由 swagger-codegen-2.4.24 为语言 jaxrs 生成的。
生成的代码有一个后缀为“*ApiService”的抽象类,它定义了一系列方法,每个方法对应于API的Swagger规范上定义的每个操作。
每个方法都有一个 javax.ws.rs.core.SecurityContext 接口局部变量。
现在,在扩展“*ApiService”的自定义类上,它显然具有 javax.ws.rs.core.SecurityContext 类局部变量,我需要获取请求标头“X-Forwarded-For”的值。
如果我调试自定义类,我会看到 SecurityContext 接口是 org.glassfish.jersey.server.internal.process.SecurityContextInjectee 的实例,它具有我需要的标头。
由于 SecurityContextInjectee 是私有的,我无法使用它,因此如何获取该信息?
我意识到,如果 swagger-codegen 生成的类除了 SecurityContext 之外还添加了 javax.servlet.http.HttpServletRequest 类,则可以访问请求参数,但我没有看到任何允许这样做的 jaxrs 参数。
期待您的评论。
我有一个带有 Spring Cloud Gateway 的微服务架构,每个微服务都有自己的 Open Api Spec。我需要将它们全部合并到 1 个开放 Api 规范( yaml 或 json )中。我不是在谈论服务多个链接的单个 swagger UI。我确实需要合并规范,因为规范的使用者需要一个 json 文件。此文件由 Atlassian 的 Open Api Validator 使用。
我需要使用带有 Jakarta 包的 swagger codegen gradle 插件生成 spring 控制器源代码,但我在配置中看不到这样做的选项
我尝试使用以下选项来生成招摇代码:
additionalProperties = [
"errorOnUnknownEnum": true,
"dateLibrary": "java8",
"hideGenerationTimestamp": true,
"modelPackage": "com.delphix.api.gw.model${version}",
"apiPackage": "com.delphix.api.gw.api${version}",
"interfaceOnly": true,
"packageName": "api",
"useTags": true,
"useJakartaEe" : true,
"useSpringBoot3" : true,
"generateSupportingFiles" : false,
"java11" : true,
]
Run Code Online (Sandbox Code Playgroud) 我想使用swagger-codegen maven插件为我的API生成JAX-RS服务器存根,但我想使用自己的服务实现类,而不是生成的服务实现类.有没有办法生成除了这个类以外的所有东西?对于我的API,该工具生成四个api类:ProfilesApi,ProfilesApiService,ProfilesApiServiceFactory和ProfilesApiServiceImpl.
我目前的maven配置:
<configuration>
<inputSpec>src/main/resources/Profile.json</inputSpec>
<language>jaxrs</language>
<configOptions>
<dateLibrary>java8</dateLibrary>
</configOptions>
<models>Profile,PageInformation,ProfileResult</models>
<modelPackage>com.myApp.profile-api-model</modelPackage>
<apiPackage>com.myApp.profile-api-webapp</apiPackage>
<library>jersey2</library>
<environmentVariables>
<!-- change default client library (here until plugin 2.1.5). Doesn't seem to work! -->
<library>jersey2</library>
<!-- generate all models -->
<models></models>
<!-- generate all APIs -->
<apis></apis>
<!-- generate just the supporting files that are Java source code (not project build files) -->
<supportingFiles>ApiException.java,ApiOriginFilter.java,ApiResponseMessage.java,JacksonJsonProvider.java,LocalDateProvider.java,LocalDateTimeProvider.java,NotFoundException.java,StringUtil.java,web.xml,ProfilesApi.java,ProfilesApiService.java,ProfilesApiServiceFactory.java</supportingFiles>
</environmentVariables>
</configuration>
Run Code Online (Sandbox Code Playgroud) 我需要为java创建swagger codegen客户端,javascript指向https上的swagger yaml pusblished.
尝试下面的命令得到SSLHandshakeError.
"swagger-codegen generate -i https://localhost:443/api/swagger.yaml -l java -o java-api/."
Run Code Online (Sandbox Code Playgroud)
另外,当swagger codegen生成客户端时,它会为https swagger spec url提供SSL Mutual TLS代码吗?
请帮忙.
指出正确的文档,教程,示例或提供一个,显示如何将特定的身份验证令牌添加到Python中Swagger生成的API客户端中的特定标头?
这是我尝试过的:
使用正确的curl命令,我的API调用工作得很好:
curl -v -H 'X-CAG-Authorization: AG_CONSUMER_TOKEN access-key=31337-70k3n' \
'https://api.company.net/api/v1/user/detail?user=1'
* Trying 10.10.1.10...
* Connected to api.company.net (10.10.1.10) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
* Server certificate: *.company.net
* Server certificate: COMODO RSA Organization Validation Secure Server CA
* Server certificate: COMODO RSA Certification Authority
> GET /api/v1/user/detail?user=1 HTTP/1.1
> Host: api.company.net
> User-Agent: curl/7.49.1
> Accept: */*
> X-CAG-Authorization: AG_CONSUMER_TOKEN access-key=31337-70k3n
>
< HTTP/1.1 200 OK
< Server: openresty
< Date: Thu, 22 Dec 2016 …Run Code Online (Sandbox Code Playgroud) 使用Swagger Editor,我为我的API创建了一个规范。我看到Swagger在其Swagger编辑器中还提供了“生成客户端”选项(可能使用Swagger Codegen)。
我想生成一个客户端并在我的React应用程序(通过create-react-app创建)中使用它,并且最好享受一些静态类型输入功能(当前使用flow)。
Swagger Editor中的所有选项似乎都不起作用:
javascript-提供了所需的香草节点模块npm install作为项目的依赖项。现在,不仅没有任何类/类型,而且还失败了:
Uncaught Error: Cannot find module "ApiClient"
at webpackMissingModule (index.js:17)
at exports.ApiClient (index.js:17)
at Object.<anonymous> (index.js:22)
at __webpack_require__ (bootstrap 75f547b…:555)
at fn (bootstrap 75f547b…:86)
at new Index (index.js:87)
at ReactCompositeComponent.js:295
at measureLifeCyclePerf (ReactCompositeComponent.js:75)
at ReactCompositeComponentWrapper._constructComponentWithoutOwner (ReactCompositeComponent.js:294)
at ReactCompositeComponentWrapper._constructComponent (ReactCompositeComponent.js:280)
typescript-* 选项与js不兼容,我不必知道如何/想要将TypeScript添加到我的项目中。*-angular 选项当然是无关紧要的。.ts文件并将其隐藏到flow。怎么样??.js文件添加到我的项目中。当前不起作用,因为生成的代码带有其自己的依赖项。flow吗?)。怎么样??谢谢
我如何才能获得迅速的代码生成器以使用现有类而不是创建新类?这可能吗?例如,我想使用org.springframework.data.domain.Page而不是大胆地创建另一个页面类。
我在spring中使用swagger code-gen从swagger.yaml文件生成了代码.
现在我已经为我的API更新了swagger.yaml文件,并添加了更多的HTTP操作.
是否可以自动更新先前生成的现有代码而无需手动合并?
我正在使用SwaggerCodegen(2.3.1)生成我的API的客户端代码。我将枚举用作YAML定义文件的一部分,之后Swagger生成了Java文件。
random:
enum:
- A
- B
- C+
- C-
type: string
Run Code Online (Sandbox Code Playgroud)
此yml转换为
public enum Random{
A("A"),
B("B"),
C_("C+"),
C_("C-"); // compile time error..
private String value;
....}
Run Code Online (Sandbox Code Playgroud)
有没有办法给我的枚举值命名,如下所示?
public enum Random{
A("A"),
B("B"),
CP("C+"),
CM("C-");
}
Run Code Online (Sandbox Code Playgroud) swagger-codegen ×10
swagger ×7
java ×3
spring-boot ×2
flowtype ×1
jax-rs ×1
maven ×1
openapi ×1
python ×1
reactjs ×1
rest ×1
spring ×1
springdoc ×1
swagger-2.0 ×1
swagger-ui ×1
typescript ×1