Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

ToBePlus/swagger-angular-client

Open more actions menu
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

39 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

swagger-angular-client

AngularJS service for communicating with endpoints described by swagger v1.2.

Usage

To use, include one of these files in your application:

You may also bower install swagger-angular-client to install using bower. Once you've included the script, you can include the swagger-client module as a dependency to your existing application and use the swaggerClient service to generate api clients.

Schemas can be generated using fetch-swagger-schema.

Simple Example

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Example</title>
  <script src="angular.js"></script>
</head>
<body ng-app="myApp" ng-cloak>
    Pet: {{ pet.name || 'Loading...' }}

  <script src="swagger-client.js"></script>

  <!-- `petStoreSchema.js` exposes the JSON object generated by [fetch-swagger-schema] when run against http://petstore.swagger.wordnik.com/api/api-docs to the window as `PetStoreSchema` (see `examples/petStoreSchema.js`). -->
  <script src="petStoreSchema.js"></script>

  <script>
  angular.module('myApp', ['swagger-client'])
    .run(function($rootScope, swaggerClient){
      var api = swaggerClient(PetStoreSchema);

      api.auth('secret-key');
      api.pet.addPet({id: 1, name: 'Bob'}).then(function(){
        return api.pet.getPetById(1);
      }).then(function(pet){
        $rootScope.pet = pet;
      });
    });
  </script>
</body>
</html>

Real-world Example

'use strict';

// First, we need to define a provider for the api client, we'll call it 'myAPI'
angular.module('data').provider('myAPI',
['window', function(window){
  var schema = window.API_SCHEMA,
    auth;

  // Override the base path to enable pointing to different backends
  this.basePath = function(basePath){
    schema.apis.forEach(function(api){
      api.apiDeclaration.basePath = basePath;
    });
  };

  // Allows for setting the auth token during .config() phase of app start up.
  this.auth = function(authToken){
    auth = authToken;
  };

  // Instantiates the swagger-angular-client
  this.$get = ['$rootScope', 'swaggerClient', function($rootScope, swaggerClient){
    var api = swaggerClient(schema);
    api.authorization(auth);

    // Handle any future api token changes
    $rootScope.$on('api token changed', function($event, authToken){
      api.authorization(authToken);
    });

    return api;
  }];
}])

// Now we'll configure myAPI during app start up by setting the auth token.
// You would decide where this token comes from. Maybe it's ok to embed directly
// in the code. Maybe it comes from a cookie. Maybe you don't even need auth.
// This all depends on your auth scheme.
.config(['myAPIProvider', function(myAPIProvider){
  myAPIProvider.auth(THE_TOKEN);
}])

// Finally, we can start using myAPI in the application
.run(['myAPI', function(myAPI){
  // This would be an application-specific call. In this example, we make an
  // http request to a api endpoint to notify the metrics resource that the
  // application has loaded.
  myAPI.metrics.appLoaded({
    time: Date.now()
  });
}]);

About

AngularJS service for communicating with endpoints described by swagger.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 98.7%
  • HTML 1.3%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.