RicoSuter / NSwag

The Swagger/OpenAPI toolchain for .NET, ASP.NET Core and TypeScript.
http://NSwag.org
MIT License
6.78k stars 1.29k forks source link

Nswag Log File and Typescript Generator #581

Closed Rui90 closed 7 years ago

Rui90 commented 7 years ago

Is there anyway to access a NSWAG Studio Log File? Because I am using this options http://imgur.com/a/be80L to generate my typescript but via command line I do not know how to do it. Is there anyway to know how to do it? Because the typescript generator via command line that you give is to basic and it generate the default content.

RicoSuter commented 7 years ago

Just save the .nswag file from NSwagStudio then run

nswag run myconfig.nswag

Otherwise you can run

nswag help

To see all available options and settings

Rui90 commented 7 years ago

many thanks but there is a problem with that solution, if I use the myconfig.swag file, if I edit my api to add a new controller I will need to create a new nswag file all over again since or edit the file manually :/

Rui90 commented 7 years ago

swagger specification:

{
  "swaggerGenerator": {
    "webApiToSwagger": {
      "assemblyPaths": [
        "AppBackend/AppBackend/bin/AppBackend.dll"
      ],
      "referencePaths": [],
      "isAspNetCore": false,
      "controllerNames": [
        "AppBackend.Controllers.AuthController",
        "AppBackend.Controllers.LessorController",
        "AppBackend.Controllers.UserController"
      ],
      "defaultUrlTemplate": "api/{controller}/{id}",
      "defaultPropertyNameHandling": "Default",
      "defaultEnumHandling": "Integer",
      "flattenInheritanceHierarchy": false,
      "generateKnownTypes": true,
      "generateXmlObjects": false,
      "addMissingPathParameters": false,
      "infoTitle": "Web API Swagger specification",
      "infoVersion": "1.0.0",
      "output": null
    }
  },
  "codeGenerators": {
    "swaggerToTypeScriptClient": {
      "className": "{controller}Client",
      "moduleName": "",
      "namespace": "",
      "typeScriptVersion": 1.8,
      "template": "AngularJS",
      "promiseType": "Promise",
      "dateTimeType": "Date",
      "generateClientClasses": true,
      "generateClientInterfaces": true,
      "wrapDtoExceptions": false,
      "useTransformOptionsMethod": false,
      "useTransformResultMethod": false,
      "generateDtoTypes": true,
      "operationGenerationMode": "MultipleClientsFromOperationId",
      "markOptionalProperties": true,
      "typeStyle": "Interface",
      "generateDefaultValues": true,
      "excludedTypeNames": [],
      "output": "RenterLogApiBackendClient.ts"
    },
    "swaggerToCSharpClient": {
      "exceptionClass": "SwaggerException",
      "generateClientClasses": true,
      "generateClientInterfaces": false,
      "generateDtoTypes": true,
      "injectHttpClient": false,
      "wrapSuccessResponses": false,
      "useHttpClientCreationMethod": false,
      "useHttpRequestMessageCreationMethod": false,
      "generateExceptionClasses": true,
      "generateContractsOutput": false,
      "className": "{controller}Client",
      "namespace": "MyNamespace",
      "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,
      "excludedTypeNames": [],
      "output": null
    },
    "swaggerToCSharpController": {
      "className": "{controller}",
      "namespace": "MyNamespace",
      "additionalNamespaceUsages": [
        "System.Web.Http"
      ],
      "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,
      "excludedTypeNames": [],
      "output": null
    }
  }
}
RicoSuter commented 7 years ago

You can use * in the file:

  "controllerNames": [
    "AppBackend.Controllers.*"
  ],

but this will not work with the UI