我试图生成一个API客户端从v2 swagger文件openapi生成器cli。为此,我使用openapi生成器cli的docker容器,它将其版本报告为4.1.0-SNAPSHOT。
代码生成使用以下选项:
{
"npmName": "...",
"npmVersion": "0.0.3",
"snapshot": true,
"ngVersion": "8.1.1"
}
我还尝试将提供的InRoot
选项设置为true。
但是,生成的服务类不使用@Inject table
装饰器进行注释。因此,在我的组件中导入它们并在组件的构造函数中添加服务后,我无法使用它们。这就是我的组件的样子:
import { Component, OnInit } from '@angular/core';
import { UsersService, User } from '...'
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(userService: UsersService) {}
title = 'user-frontend';
ngOnInit() {
this.userService.listUsers();
}
}
失败,因为userService不在AppComponent的作用域中。
这是我如何导入生成的模块:
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { ApiModule } from '...';
import { HttpClientModule } from '@angular/common/http';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
ApiModule,
HttpClientModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
在生成api客户端时,我的错误在哪里?
编辑:生成的代码如下:
@Injectable({
providedIn: 'root'
})
export class UsersService {
protected basePath = 'http://localhost';
public defaultHeaders = new HttpHeaders();
public configuration = new Configuration();
public encoder: HttpParameterCodec;
constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
if (configuration) {
this.configuration = configuration;
this.configuration.basePath = configuration.basePath || basePath || this.basePath;
} else {
this.configuration.basePath = basePath || this.basePath;
}
this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
}
...
}
许多问题从“…”导入{apimule};生成的代码来自哪里?您是将其发布到npm并使用它,还是只是复制粘贴生成的代码?试试这个
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
HttpClientModule,
ApiModule.forRoot(() => {
return new Configuration({
basePath: `${environment.HOST}:${environment.PORT}`,
});
}),,
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
您生成的代码应该是这样的
@Injectable({
providedIn: 'root'
})
export class PetsService {
protected basePath = 'http://localhost';
public defaultHeaders = new HttpHeaders();
public configuration = new Configuration();
constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {
if (configuration) {
this.configuration = configuration;
this.configuration.basePath = configuration.basePath || basePath || this.basePath;
} else {
this.configuration.basePath = basePath || this.basePath;
}
}
解决方案:在构造函数中使用私有或公共
说明:这里我们有和你一样的问题打字稿不知道你想要什么
class TestClass {
constructor(name: string) {
}
}
这里我们有最后一个普通POO promamming语言的例子
class TestClass {
private name: string;
constructor(name: string) {
this.name = name;
}
}
但是打字稿给了我们一个简单的方法来减少代码
class TestClass {
constructor(private name: string) { }
}
我正在维护一个Java应用程序,我们在其中不断添加新特性(api中的更改)。我想使用OpenAPI作为记录api的一种方式。我看到两种思想流派: 编写代码,使用一些注释来生成OpenAPI规范。 虽然两者看起来都很好,但服务器代码只是简单地存档了,然后需要大量的手动插入服务。虽然这似乎罚款作为一个一次性成本,然后下次我更新界面,它似乎对我来说唯一的两个选项是 再次生成它们,重新执行所有手动接线 手
我使用的是默认配置,但由于某种原因,我一直收到以下错误: 任务“Generate OpenApidocs”执行失败。无法连接到http://localhost:8080/v3/api-文档等待了30秒 似乎由于某种原因,它没有设置服务器。我该怎么修好它?
我正在使用openapi生成器maven插件的4.3.1版本在Java11中生成SpringBoot服务器。 对于PUT请求,我希望能够在成功时将URI返回到创建/更新的对象,并且在不成功时返回带有问题信息的纯文本。 我的API的json对于PUT请求有以下内容: 生成的API: 然而,该方法的返回类型是
当使用带有Gradle的OpenAPI生成器时,我希望将性别化的源发送到其他源生成器插件使用的标准目录。类似于Maven生成源的东西。 到目前为止,我还不能这样做,特别是将生成限制为Java源类,而不是整个“原型项目”。 似乎OpenAPI Gradle插件的工作流程与Maven插件的工作流程并不相同。 是否有配置标志来省略所有非java代码的生成,并在“生成的源代码”文件夹(如/out/prod
我在从服务器构建时遇到问题。我的项目是一个使用Netbeans IDE的Android应用程序。当我运行我的应用程序时,一切正常,编译器完全不报告任何错误。但是当我向服务器发送build Netbeans时,我会报告一个成功的构建,但是当我登录到构建服务器时,我看到的是一个构建失败并带有错误日志。 以下是我从生成服务器获得的错误日志: 构建失败/home/ec2 user/android sdk/
我正在使用openapi生成器生成服务器存根python代码。一切正常,但是,每次我修改OpenAPI规范(yaml文件),代码生成器都会覆盖整个代码,甚至是定制的代码(控制器)。我想开发一个增量工作流,如果我对规范进行了更改,生成器将只修改处理该部分代码的代码。 如果我能够执行规范并拥有一个增量工作流,那就太好了。 我使用的是openapi生成器版本3.3。4. 我试图修改控制器并删除,但每次我