Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

nodejs generator : /docs doesnt show all operations #652

Closed
mohsen1 opened this issue Apr 16, 2015 · 19 comments
Closed

nodejs generator : /docs doesnt show all operations #652

mohsen1 opened this issue Apr 16, 2015 · 19 comments

Comments

@mohsen1
Copy link

mohsen1 commented Apr 16, 2015

Hi all and thanks for this great job !,
I know that embeded generators are in alpha stage but I have just noticed the following behavior :
with nodejs generated code, UI (with /docs) shows only the last operation for each path.

for exemple :

- /pet 
  - GET 
  - PUT 

the unique operation shown will be the PUT
Thx !

@Cooker-Monster
Copy link

hi all,
I still can't figure out what's going on with /docs : even with Petstore sample, the behaviour is strange.
Does anyone can confirm please (very straigthforward to test) ?
IE, only DELETE verbe is visible on UI with /users/{username} though GET/PUT are defined ...
there is a deep impact on the service side behavior too : the getUserByName funtion is not routed :
"Error: Route defined in Swagger specification (/users/{username}) but there is no defined get operation."
I'm wondering if it's a swagger-tools issue ?
Any help is warm welcomed !
missing

@webron
Copy link
Contributor

webron commented May 4, 2015

@Cooker-Monster - how do you run the sample? Notice it says at the top that you need to use special-key as the API key, so some of the operations may be hidden.

@Cooker-Monster
Copy link

@webron : thx for the answer
I followed this process :

  • 1: take petstore sample (petstore_full.yaml) into editor (editor.swagger.io)
  • 2 : generate the code (node.js)
  • 3: run the code (localhost).
    There is no security set on /users/{username} path+methods so, I don't think this is a special-key matter.

@webron
Copy link
Contributor

webron commented May 4, 2015

So basically this is a duplicate of #667?

@Cooker-Monster
Copy link

maybe or maybe not !
I could be the same origin but not the same destination :

  • the first one is an explorer view issue
  • the second one is a generation code issue

@webron
Copy link
Contributor

webron commented May 4, 2015

But do you see those operations generated? Because if not, it's no wonder they are not visible.

@Cooker-Monster
Copy link

Yes, they are generated ... it's just the link between function and path this is not done ...

@webron
Copy link
Contributor

webron commented May 4, 2015

Can you share the output of /api-docs/user or /api-docs/User from the generated application?

@Cooker-Monster
Copy link

I don't catch it, sorry : ther is no /api-docs available (only /docs) !

@webron
Copy link
Contributor

webron commented May 4, 2015

Looking at your screenshot, it says http://localhost:8080/api-docs.

@Cooker-Monster
Copy link

yes but this is not relevant. anyway, api-docs/user or User gives "Cant' read swagger JSON from http://localhost:8080/api-docs/User"
I have just check it now with a new generation of the petstore api ... sorry !

@Cooker-Monster
Copy link

Going further, I have set debug to see what's going on (hope it will help !).

Let's focus on User Paths & Controler (for practical reason) :

  • path /users/{username} is found
  • controler User.js have among its methods : "getUserByName" and "deleteUser"

This is the middleware init steps full log :
<<
swagger-tools:middleware:metadata Initializing swagger-metadata middleware +0ms
swagger-tools:middleware:metadata Identified Swagger version: 2.0 +3ms
swagger-tools:middleware:metadata Found Path: /users +6ms
swagger-tools:middleware:metadata Found Path: /users/createWithArray +1ms
swagger-tools:middleware:metadata Found Path: /users/createWithList +0ms
swagger-tools:middleware:metadata Found Path: /users/login +0ms
swagger-tools:middleware:metadata Found Path: /users/logout +1ms
swagger-tools:middleware:metadata Found Path: /users/{username} +0ms
swagger-tools:middleware:metadata Found Path: /stores/order +0ms
swagger-tools:middleware:metadata Found Path: /stores/order/{orderId} +0ms
swagger-tools:middleware:metadata Found Path: /pets +0ms
swagger-tools:middleware:metadata Found Path: /pets/findByStatus +1ms
swagger-tools:middleware:metadata Found Path: /pets/findByTags +0ms
swagger-tools:middleware:metadata Found Path: /pets/{petId} +0ms
swagger-tools:middleware:validator Initializing swagger-validator middleware +0ms
swagger-tools:middleware:validator Response validation: disabled +1ms
swagger-tools:middleware:router Initializing swagger-metadata middleware +0ms
swagger-tools:middleware:router Mock mode: disabled +1ms
swagger-tools:middleware:router Controllers: +1ms
swagger-tools:middleware:router /somewhere/Sandbox/nodejs-server/controllers/Pet.js: +2ms
swagger-tools:middleware:router Pet_updatePet +0ms
swagger-tools:middleware:router Pet_addPet +0ms
swagger-tools:middleware:router Pet_findPetsByStatus +1ms
swagger-tools:middleware:router Pet_findPetsByTags +0ms
swagger-tools:middleware:router Pet_getPetById +0ms
swagger-tools:middleware:router Pet_updatePetWithForm +0ms
swagger-tools:middleware:router Pet_deletePet +0ms
swagger-tools:middleware:router /somewhere/Sandbox/nodejs-server/controllers/PetService.js: +0ms
swagger-tools:middleware:router PetService_updatePet +0ms
swagger-tools:middleware:router PetService_addPet +0ms
swagger-tools:middleware:router PetService_findPetsByStatus +0ms
swagger-tools:middleware:router PetService_findPetsByTags +0ms
swagger-tools:middleware:router PetService_getPetById +0ms
swagger-tools:middleware:router PetService_updatePetWithForm +1ms
swagger-tools:middleware:router PetService_deletePet +0ms
swagger-tools:middleware:router /somewhere/Sandbox/nodejs-server/controllers/Store.js: +1ms
swagger-tools:middleware:router Store_placeOrder +0ms
swagger-tools:middleware:router Store_getOrderById +0ms
swagger-tools:middleware:router Store_deleteOrder +0ms
swagger-tools:middleware:router /somewhere/Sandbox/nodejs-server/controllers/StoreService.js: +0ms
swagger-tools:middleware:router StoreService_placeOrder +1ms
swagger-tools:middleware:router StoreService_getOrderById +0ms
swagger-tools:middleware:router StoreService_deleteOrder +0ms
swagger-tools:middleware:router /somewhere/Sandbox/nodejs-server/controllers/User.js: +1ms
swagger-tools:middleware:router User_createUser +0ms
swagger-tools:middleware:router User_createUsersWithArrayInput +0ms
swagger-tools:middleware:router User_createUsersWithListInput +0ms
swagger-tools:middleware:router User_loginUser +0ms
swagger-tools:middleware:router User_logoutUser +0ms
swagger-tools:middleware:router User_getUserByName +0ms
swagger-tools:middleware:router User_updateUser +0ms
swagger-tools:middleware:router User_deleteUser +1ms
swagger-tools:middleware:router /somewhere/Sandbox/nodejs-server/controllers/UserService.js: +0ms
swagger-tools:middleware:router UserService_createUser +0ms
swagger-tools:middleware:router UserService_createUsersWithArrayInput +0ms
swagger-tools:middleware:router UserService_createUsersWithListInput +0ms
swagger-tools:middleware:router UserService_loginUser +0ms
swagger-tools:middleware:router UserService_logoutUser +0ms
swagger-tools:middleware:router UserService_getUserByName +0ms
swagger-tools:middleware:router UserService_updateUser +0ms
swagger-tools:middleware:router UserService_deleteUser +0ms

but when I try DELETE and GET operations on /users/{username}, as it could be seen in UI, only DELETE is available (GET handler is missing)

<<
swagger-tools:middleware:metadata DELETE /v2/users/truc +4ms
swagger-tools:middleware:metadata Is a Swagger path: true +0ms
swagger-tools:middleware:metadata Is a Swagger operation: true +1ms
swagger-tools:middleware:metadata Processing Parameters +0ms
swagger-tools:middleware:metadata username +1ms
swagger-tools:middleware:metadata Type: string +0ms
swagger-tools:middleware:metadata Value provided: true +0ms
swagger-tools:middleware:metadata Value: truc +1ms
swagger-tools:middleware:validator DELETE /v2/users/truc +0ms
swagger-tools:middleware:validator Will process: yes +0ms
swagger-tools:middleware:router DELETE /v2/users/truc +2ms
swagger-tools:middleware:router Will process: yes +1ms
swagger-tools:middleware:router Route handler: User_deleteUser +0ms
swagger-tools:middleware:router Mock mode: false +0ms
swagger-tools:middleware:metadata GET /v2/users/truc +20s
swagger-tools:middleware:metadata Is a Swagger path: true +0ms
swagger-tools:middleware:metadata Is a Swagger operation: false +17ms
swagger-tools:middleware:validator GET /v2/users/truc +0ms
swagger-tools:middleware:validator Will process: no +0ms
swagger-tools:middleware:validator Request validation: succeeded +0ms
swagger-tools:middleware:router GET /v2/users/truc +0ms
swagger-tools:middleware:router Will process: no +1ms
swagger-tools:middleware:router No handler for method: GET +0ms

So, yes, the behavior seen in UI have the same origin as the routing problem into the code.
Don't know how I can help more ... maybe going deeper into the code but it will take a while !!!

@Cooker-Monster
Copy link

@webron : I know why !!!
It's because of file generated in /api/swagger.json.
the path is copied for each command rather than have only one path for many commands.
Due to this, some commands are missing by the router.
I guess that this could be easily fixed ...

@webron
Copy link
Contributor

webron commented May 5, 2015

@Cooker-Monster - can you clarify? Do you see the issue from the code generated by the codegen for nodejs or something else?

@Cooker-Monster
Copy link

@webron: yes, the issue is located in codegen nodejs and to be more precise in NodeJSServerCodegen Java Class which uses swagger.mustache template to create api/swagger.json file.

api/swagge.json is wrong.

This is not an issue in Swagger tools as it was one of hypothesis ...

@webron
Copy link
Contributor

webron commented May 5, 2015

Got it, thanks.

@Cooker-Monster
Copy link

You're welcome ! I'll dig to create a coffeescript generator for my needs ... wondering if it's valuable ?

@webron
Copy link
Contributor

webron commented May 5, 2015

Sure, anything could be great.

@templth
Copy link

templth commented Jul 30, 2015

Hi all,

Hugo (https://github.com/hgwood) and I worked on a fix for this issue. We created a PR for the fix: #1037.

Feel free to make us your comments!

wing328 added a commit that referenced this issue Aug 11, 2015
Fix swagger.json supporting file for the node.js server (fixes #652)
@fehguy fehguy closed this as completed in d93b404 Aug 24, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants