GithubHelp home page GithubHelp logo

isabella232 / swagger-angular-client Goto Github PK

View Code? Open in Web Editor NEW

This project forked from signalfx/swagger-angular-client

0.0 0.0 0.0 757 KB

AngularJS service for communicating with endpoints described by swagger.

License: Other

JavaScript 98.66% HTML 1.34%

swagger-angular-client's Introduction

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()
  });
}]);

swagger-angular-client's People

Contributors

unsetbit avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.