Использование Swagger с javascript на клиентском сайте без NodeJs - PullRequest
0 голосов
/ 22 октября 2018

Как я могу использовать сгенерированный Swagger исходный код клиента API на клиентском сайте (обычное приложение для браузера без NodeJs)?

В первом тесте я сгенерировал клиент javascript для API-хранилища Swaggers для petstore API (https://petstore.swagger.io/v2) using editor.swagger.io

Сгенерированный код содержит index.js, который предоставляет доступ к конструкторам для открытых классов API, которые я пытаюсь внедрить и использовать в своем веб-приложении..

Документация описывает использование API следующим образом:

  var SwaggerPetstore = require('swagger_petstore');
  var defaultClient = SwaggerPetstore.ApiClient.instance;

  // Configure API key authorization: api_key
  var api_key = defaultClient.authentications['api_key'];
  api_key.apiKey = 'YOUR API KEY';
  // Uncomment the following line to set a prefix for the API key, e.g. "Token" (defaults to null)
  //api_key.apiKeyPrefix = 'Token';

  var apiInstance = new SwaggerPetstore.PetApi();

  var petId = 789; // Number | ID of pet to return


  var callback = function(error, data, response) {
    if (error) {
      console.error(error);
    } else {
      console.log('API called successfully. Returned data: ' + data);
    }
  };
  apiInstance.getPetById(petId, callback);

Это прекрасно работает для приложений NodeJ. Но как я могу использовать API для обычных веб-приложений на клиентских сайтах внутрибраузер? Для таких приложений функция nodejs require не работает.

1 Ответ

0 голосов
/ 11 марта 2019

С https://github.com/swagger-api/swagger-js

В примере есть проблема кросс-происхождения, но он должен работать в вашем собственном проекте

<html>
<head>
<script src='//unpkg.com/swagger-client' type='text/javascript'></script> 
<script>

var specUrl = '//petstore.swagger.io/v2/swagger.json'; // data urls are OK too 'data:application/json;base64,abc...'
SwaggerClient.http.withCredentials = true; // this activates CORS, if necessary

var swaggerClient = new SwaggerClient(specUrl)
      .then(function (swaggerClient) {
          return swaggerClient.apis.pet.addPet({id: 1, name: "bobby"}); // chaining promises
      }, function (reason) {
         console.error("failed to load the spec" + reason);
      })
      .then(function(addPetResult) {
         console.log(addPetResult.obj);
         // you may return more promises, if necessary
      }, function (reason) {
          console.error("failed on API call " + reason);
      });
</script>
</head>
<body>
  check console in browser's dev. tools
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...