swagger-api / swagger-codegen

swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition.
http://swagger.io
Apache License 2.0
16.91k stars 6.03k forks source link

[JavaScript] How do I set auth headers for all/some requests? #6564

Closed dganoff closed 6 years ago

dganoff commented 6 years ago
Description

I generated a JavaScript SDK, but am not clear on how to set authentication headers. I'd love to be able to set the auth headers used for all future requests via some sort of default headers setting. I've tried setting the ApiClient.defaultHeaders like below, but with no success:

Update: I updated the below code showing a way I got the headers to be added to the requests made by connAPI, but this code is definitely less than ideal. There must be another way to set these auth headers in a more flexible/programmatic way.

import telnyxSDK from 'telnyx-sdk';

const connAPI = new telnyxSDK.ConnectionsApi();
connAPI.apiClient.defaultHeaders = {
  'x-api-user': 'my-username',
  'x-api-token': 'my-token'
};

let _payload = {
  connection_name: 'test-name',
  tech_prefix: 'test-prefix',
  active: true
};

return connAPI.addConnection(_payload).then(function(data) {
  console.log('API called successfully. Returned data: ' + data);
}, function(error) {
  console.log(error);
});

The request gets made, but without any of the auth headers.

Please advise, thanks!

Swagger-codegen version

2.2.3 (via swagger-codegen-cli docker image)

Swagger declaration file content or url

https://api.telnyx.com/mission_control_docs

Command line used for generation

swagger-codegen generate -i https://api.telnyx.com/mission_control_docs -l javascript

wing328 commented 6 years ago

@dganoff if your openapi/swagger spec contains the proper security definition for endpoints, then the auto-generated documentation should contain the code samples on how to make the proper call.

Did you have a chance to review the auto-generated doc in the JS API client?

dganoff commented 6 years ago

@wing328 Yes, I looked over the documentation for each <Name>Api.md and they all have a section for "Authorization" that reads "No authorization required". I'm assuming this is where it would document how to set the auth headers.

I'm wondering if the operations from the paths in our swagger spec need to have a security key in them?

wing328 commented 6 years ago

Yup, you will need to add security to the endpoint definition, e.g. https://github.com/swagger-api/swagger-codegen/blob/master/modules/swagger-codegen/src/test/resources/2_0/petstore.yaml#L183