I use NSwag
to generate TypeScript code. The generated nswag code sends null when I use an nullable int in a Web API.
How do I prevent NSwag
to generated this code or allow .NET Core 3.1 to accept this as a valid value?
http://localhost:4000/api/SurveyManagement/UpdateRouteSurvey?toSurveyId=null
Generated TypeScript code:
updateRouteSurvey(toSurveyId: number | null): Observable<void> {
let url_ = this.baseUrl + "/api/SurveyManagement/UpdateRouteSurvey?";
if (toSurveyId === undefined)
throw new Error("The parameter 'toSurveyId' must be defined.");
else
url_ += "toSurveyId=" + encodeURIComponent("" + toSurveyId) + "&";
url_ = url_.replace(/[?&]$/, "");
...
C# API interface
[HttpPost(nameof(UpdateRouteSurvey))]
public async Task UpdateRouteSurvey(int? toSurveyId) =>
await _manageSurveyService.UpdateRouteSurvey(toSurveyId);
NSwag config
"openApiToTypeScriptClient": {
"className": "{controller}Client",
"moduleName": "",
"namespace": "",
"typeScriptVersion": 2.7,
"template": "Angular",
"promiseType": "Promise",
"httpClass": "HttpClient",
"useSingletonProvider": false,
"injectionTokenType": "InjectionToken",
"rxJsVersion": 6.0,
"dateTimeType": "Date",
"nullValue": "Null",
"generateClientClasses": true,
"generateClientInterfaces": false,
"generateOptionalParameters": false,
"exportTypes": true,
"wrapDtoExceptions": false,
"exceptionClass": "SwaggerException",
"clientBaseClass": null,
"wrapResponses": false,
"wrapResponseMethods": [],
"generateResponseClasses": true,
"responseClass": "SwaggerResponse",
"protectedMethods": [],
"configurationClass": null,
"useTransformOptionsMethod": false,
"useTransformResultMethod": false,
"generateDtoTypes": true,
"operationGenerationMode": "MultipleClientsFromOperationId",
"markOptionalProperties": false,
"generateCloneMethod": false,
"typeStyle": "Interface",
"classTypes": [],
"extendedClasses": [],
"extensionCode": null,
"generateDefaultValues": false,
"excludedTypeNames": [],
"excludedParameterNames": [],
"handleReferences": false,
"generateConstructorInterface": true,
"convertConstructorInterfaceData": false,
"importRequiredTypes": true,
"useGetBaseUrlMethod": false,
"baseUrlTokenName": "API_BASE_URL",
"queryNullValue": "",
"inlineNamedDictionaries": false,
"inlineNamedAny": false,
"templateDirectory": null,
"typeNameGeneratorType": null,
"propertyNameGeneratorType": null,
"enumNameGeneratorType": null,
"serviceHost": null,
"serviceSchemes": null,
}