marcinn
marcinn

Reputation: 1938

Generate javascript client from Servicestack api metadata/swagger

is there any way to auto-generate ServiceStack javascript (no typescript) client based on metadata/Swagger? It would be good to integrate that somehow with webpack.

I am not sure is it possible to do this with swagger-js-codegen (This package generates a nodejs or angularjs class from a swagger specification file).

Actually swagger plugin doesn't share service to access swagger.json to get complete schema (the schema is splited). Is there any workaround to use swagger codegen for javascript?

By accessing http://localhost:12116/resources you can get

{"swaggerVersion":"1.2","apis":[{"path":"/resource/assignroles"},{"path":"/resource/auth"},{"path":"/resource/authenticate"},{"path":"/resource/criteria"},{"path":"/resource/import"},{"path":"/resource/tenders"},{"path":"/resource/unassignroles"}],"apiVersion":"1.0","basePath":"http://localhost:12116","info":{"title":"App"}}

and using http://localhost:12116/resource/import

{"swaggerVersion":"1.2","apiVersion":"1.0","basePath":"http://localhost:12116","resourcePath":"/import","apis":[{"path":"/import/stats","operations":[{"method":"GET","nickname":"BrowseImportStats","parameters":[],"errorResponses":[]}]},{"path":"/import/tenders/changes/apply","operations":[{"method":"GET","nickname":"ApplyChanges","parameters":[],"errorResponses":[]},{"method":"POST","nickname":"ApplyChanges","parameters":[{"paramType":"body","name":"body","required":false,"allowMultiple":false,"type":"ApplyChanges"}],"errorResponses":[]},{"method":"PUT","nickname":"ApplyChanges","parameters":[{"paramType":"body","name":"body","required":false,"allowMultiple":false,"type":"ApplyChanges"}],"errorResponses":[]},{"method":"DELETE","nickname":"ApplyChanges","parameters":[],"errorResponses":[]}]},{"path":"/import/tenders/sync","description":"summary","operations":[{"method":"GET","summary":"summary","nickname":"ImportTenders","parameters":[],"errorResponses":[]}]}],"models":{"ImportTenders":{"id":"ImportTenders","properties":{}},"ApplyChanges":{"id":"ApplyChanges","properties":{}},"BrowseImportStats":{"id":"BrowseImportStats","description":"BrowseImportStats","properties":{}}}}

update 2016-11-26 I was able to generate documentation

C:\git\testapp>java -jar swagger-codegen-cli-2.2.1.jar generate -i http
://localhost:12116/resources -l javascript -o ./node_modules/testapp_api --additi
onal-properties emitJSDoc=false,usePromises=true

Upvotes: 2

Views: 717

Answers (1)

William Cheng
William Cheng

Reputation: 10807

Given that you've the OpenAPI/Swagger spec, you can leverage Swagger Codegen to generate not only JS API clients but API clients in other langauges (C#, Ruby, PHP, Python, etc), server stubs (Spring, NodeJS, etc) and API documentation.

Here is a good starting point: https://github.com/swagger-api/swagger-codegen#getting-started

(If you do not want to install anything, you can also generate code online: https://github.com/swagger-api/swagger-codegen#online-generators)

Upvotes: 1

Related Questions