我尝试将我的服务创建为restful,但是当我运行Refresh.bat文件并运行npm start时。它会出错。
[HttpPost("api/services/app/Test")]
public async Task CreateTest(TestDetailsDto input)
[HttpDelete("api/services/app/Test")]
public async Task DeleteTest(EntityDto input)
[HttpGet("api/services/app/Test")]
public async Task GetTest(EntityDto input)
[HttpPut("api/services/app/Test")]
public async Task UpdateTest(TestDetailsDto input)
错误:
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6197,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6230,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6252,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6267,16):类型参数' R'的类型参数。无法推断 从用法。请考虑明确指定类型参数 输入候选参数' void'不是有效的类型参数,因为它 不是候选人的超级类型' TestDetailsDto'。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6281,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6300,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6315,16):类型参数的类型参数' R'无法推断 从用法。请考虑明确指定类型参数 输入参数候选者'数字'不是有效的类型参数,因为 它不是候选人的超级类型' TestDetailsDto'。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6329,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6351,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6370,16):类型参数' R'的类型参数。无法推断 从用法。请考虑明确指定类型参数 输入候选参数' void'不是有效的类型参数,因为它 不是候选人的超级类型' TestDetailsDto'。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6384,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-list.component.ts (210,45):Property' deleteTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (102,41):Property' getTestDetailsforEdit'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (163,37):Property' createTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (206,37):Property' createTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (218,37):Property' updateTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6197,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6230,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6252,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6267,16):类型参数' R'的类型参数。无法推断 从用法。请考虑明确指定类型参数 输入候选参数' void'不是有效的类型参数,因为它 不是候选人的超级类型' TestDetailsDto'。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6281,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6300,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6315,16):类型参数的类型参数' R'无法推断 从用法。请考虑明确指定类型参数 输入参数候选者'数字'不是有效的类型参数,因为 它不是候选人的超级类型' TestDetailsDto'。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6329,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6351,5):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6370,16):类型参数' R'的类型参数。无法推断 从用法。请考虑明确指定类型参数 输入候选参数' void'不是有效的类型参数,因为它 不是候选人的超级类型' TestDetailsDto'。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/shared/service-proxies/service-proxies.ts (6384,15):重复的功能实现。
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-list.component.ts (210,45):Property' deleteTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (102,41):Property' getTestDetailsforEdit'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (163,37):Property' createTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (206,37):Property' createTest'在类型上不存在 ' TestServiceProxy'
错误 C:/Users/MyName/source/repos/Stanchion/angular/src/app/merchandising/Tests/Test-main.component.ts (218,37):Property' updateTest'在类型上不存在 ' TestServiceProxy'
Service.Swag.Config文件:
{
"swaggerGenerator": {
"fromSwagger": {
"url": "http://localhost:22742/swagger/v1/swagger.json",
"output": null
}
},
"codeGenerators": {
"swaggerToTypeScriptClient": {
"className": "{controller}ServiceProxy",
"moduleName": "",
"namespace": "",
"typeScriptVersion": 1.8,
"template": "Angular",
"promiseType": "Promise",
"dateTimeType": "MomentJS",
"nullValue": "Undefined",
"generateClientClasses": true,
"generateClientInterfaces": false,
"generateOptionalParameters": false,
"wrapDtoExceptions": false,
"useTransformOptionsMethod": false,
"useTransformResultMethod": false,
"generateDtoTypes": true,
"operationGenerationMode": "MultipleClientsFromPathSegments",
"markOptionalProperties": false,
"generateCloneMethod": false,
"typeStyle": "Class",
"extensionCode": "service.extensions.ts",
"generateDefaultValues": true,
"excludedTypeNames": [],
"handleReferences": false,
"generateConstructorInterface": true,
"importRequiredTypes": true,
"baseUrlTokenName": "API_BASE_URL",
"output": "../src/shared/service-proxies/service-proxies.ts"
},
"swaggerToCSharpClient": {
"generateClientClasses": true,
"generateClientInterfaces": false,
"generateDtoTypes": true,
"injectHttpClient": false,
"disposeHttpClient": true,
"generateExceptionClasses": true,
"exceptionClass": "SwaggerException",
"wrapDtoExceptions": true,
"useHttpClientCreationMethod": false,
"httpClientType": "System.Net.Http.HttpClient",
"useHttpRequestMessageCreationMethod": false,
"useBaseUrl": true,
"generateSyncMethods": false,
"clientClassAccessModifier": "public",
"generateContractsOutput": false,
"className": "{controller}Client",
"namespace": "MyNamespace",
"generateOptionalParameters": false,
"requiredPropertiesMustBeDefined": true,
"dateType": "System.DateTime",
"dateTimeType": "System.DateTime",
"timeType": "System.TimeSpan",
"timeSpanType": "System.TimeSpan",
"arrayType": "System.Collections.ObjectModel.ObservableCollection",
"dictionaryType": "System.Collections.Generic.Dictionary",
"classStyle": "Inpc",
"operationGenerationMode": "MultipleClientsFromOperationId",
"generateDefaultValues": true,
"generateDataAnnotations": true,
"excludedTypeNames": [],
"wrapResponses": false,
"generateResponseClasses": true,
"responseClass": "SwaggerResponse",
"handleReferences": false,
"generateImmutableArrayProperties": false,
"generateImmutableDictionaryProperties": false,
"output": null
},
"swaggerToCSharpController": {
"className": "{controller}",
"namespace": "MyNamespace",
"additionalNamespaceUsages": [
"System.Web.Http"
],
"generateOptionalParameters": false,
"requiredPropertiesMustBeDefined": true,
"dateType": "System.DateTime",
"dateTimeType": "System.DateTime",
"timeType": "System.TimeSpan",
"timeSpanType": "System.TimeSpan",
"arrayType": "System.Collections.Generic.IEnumerable",
"dictionaryType": "System.Collections.Generic.Dictionary",
"classStyle": "Inpc",
"operationGenerationMode": "MultipleClientsFromOperationId",
"generateDefaultValues": true,
"generateDataAnnotations": true,
"excludedTypeNames": [],
"wrapResponses": false,
"generateResponseClasses": true,
"responseClass": "SwaggerResponse",
"handleReferences": false,
"generateImmutableArrayProperties": false,
"generateImmutableDictionaryProperties": false,
"output": null
}
}
}
我有" nswag":" 10.6.0"版本
它在service-proxies.ts文件中为这些方法提供了错误。
export class AppServiceProxy {
private http: Http;
private baseUrl: string;
protected jsonParseReviver: (key: string, value: any) => any = undefined;
constructor(@Inject(Http) http: Http, @Optional() @Inject(API_BASE_URL) baseUrl?: string) {
this.http = http;
this.baseUrl = baseUrl ? baseUrl : "";
}
/**
* @return Success
*/
Test(id: number): Observable<TestDetailsDto> {
let url_ = this.baseUrl + "/api/services/app/Test?";
if (id === undefined || id === null)
throw new Error("The parameter 'id' must be defined and cannot be null.");
else
url_ += "Id=" + encodeURIComponent("" + id) + "&";
url_ = url_.replace(/[?&]$/, "");
const content_ = "";
let options_ = {
body: content_,
method: "get",
headers: new Headers({
"Content-Type": "application/json; charset=UTF-8",
"Accept": "application/json; charset=UTF-8"
})
};
return this.http.request(url_, options_).flatMap((response_) => {
return this.processTest(response_);
}).catch((response_: any) => {
if (response_ instanceof Response) {
try {
return this.processTest(response_);
} catch (e) {
return <Observable<TestDetailsDto>><any>Observable.throw(e);
}
} else
return <Observable<TestDetailsDto>><any>Observable.throw(response_);
});
}
protected processTest(response: Response): Observable<TestDetailsDto> {
const status = response.status;
if (status === 200) {
const responseText = response.text();
let result200: TestDetailsDto = null;
let resultData200 = responseText === "" ? null : JSON.parse(responseText, this.jsonParseReviver);
result200 = resultData200 ? TestDetailsDto.fromJS(resultData200) : new TestDetailsDto();
return Observable.of(result200);
} else if (status === 401) {
const responseText = response.text();
return throwException("A server error occurred.", status, responseText);
} else if (status !== 200 && status !== 204) {
const responseText = response.text();
return throwException("An unexpected server error occurred.", status, responseText);
}
return Observable.of<TestDetailsDto>(<any>null);
}
/**
* @return Success
*/
Test(input: TestDetailsDto): Observable<void> {
let url_ = this.baseUrl + "/api/services/app/Test";
url_ = url_.replace(/[?&]$/, "");
const content_ = JSON.stringify(input ? input.toJSON() : null);
let options_ = {
body: content_,
method: "put",
headers: new Headers({
"Content-Type": "application/json; charset=UTF-8",
"Accept": "application/json; charset=UTF-8"
})
};
return this.http.request(url_, options_).flatMap((response_) => {
return this.processTest(response_);
}).catch((response_: any) => {
if (response_ instanceof Response) {
try {
return this.processTest(response_);
} catch (e) {
return <Observable<void>><any>Observable.throw(e);
}
} else
return <Observable<void>><any>Observable.throw(response_);
});
}
protected processTest(response: Response): Observable<void> {
const status = response.status;
if (status === 200) {
const responseText = response.text();
return Observable.of<void>(<any>null);
} else if (status === 401) {
const responseText = response.text();
return throwException("A server error occurred.", status, responseText);
} else if (status !== 200 && status !== 204) {
const responseText = response.text();
return throwException("An unexpected server error occurred.", status, responseText);
}
return Observable.of<void>(<any>null);
}
/**
* @return Success
*/
Test(input: TestDetailsDto): Observable<number> {
let url_ = this.baseUrl + "/api/services/app/Test";
url_ = url_.replace(/[?&]$/, "");
const content_ = JSON.stringify(input ? input.toJSON() : null);
let options_ = {
body: content_,
method: "post",
headers: new Headers({
"Content-Type": "application/json; charset=UTF-8",
"Accept": "application/json; charset=UTF-8"
})
};
return this.http.request(url_, options_).flatMap((response_) => {
return this.processTest(response_);
}).catch((response_: any) => {
if (response_ instanceof Response) {
try {
return this.processTest(response_);
} catch (e) {
return <Observable<number>><any>Observable.throw(e);
}
} else
return <Observable<number>><any>Observable.throw(response_);
});
}
protected processTest(response: Response): Observable<number> {
const status = response.status;
if (status === 200) {
const responseText = response.text();
let result200: number = null;
let resultData200 = responseText === "" ? null : JSON.parse(responseText, this.jsonParseReviver);
result200 = resultData200 !== undefined ? resultData200 : <any>null;
return Observable.of(result200);
} else if (status === 401) {
const responseText = response.text();
return throwException("A server error occurred.", status, responseText);
} else if (status !== 200 && status !== 204) {
const responseText = response.text();
return throwException("An unexpected server error occurred.", status, responseText);
}
return Observable.of<number>(<any>null);
}
/**
* @return Success
*/
Test(id: number): Observable<void> {
let url_ = this.baseUrl + "/api/services/app/Test?";
if (id === undefined || id === null)
throw new Error("The parameter 'id' must be defined and cannot be null.");
else
url_ += "Id=" + encodeURIComponent("" + id) + "&";
url_ = url_.replace(/[?&]$/, "");
const content_ = "";
let options_ = {
body: content_,
method: "delete",
headers: new Headers({
"Content-Type": "application/json; charset=UTF-8",
"Accept": "application/json; charset=UTF-8"
})
};
return this.http.request(url_, options_).flatMap((response_) => {
return this.processTest(response_);
}).catch((response_: any) => {
if (response_ instanceof Response) {
try {
return this.processTest(response_);
} catch (e) {
return <Observable<void>><any>Observable.throw(e);
}
} else
return <Observable<void>><any>Observable.throw(response_);
});
}
protected processTest(response: Response): Observable<void> {
const status = response.status;
if (status === 200) {
const responseText = response.text();
return Observable.of<void>(<any>null);
} else if (status === 401) {
const responseText = response.text();
return throwException("A server error occurred.", status, responseText);
} else if (status !== 200 && status !== 204) {
const responseText = response.text();
return throwException("An unexpected server error occurred.", status, responseText);
}
return Observable.of<void>(<any>null);
}
}