крошечный, простой и без лишних затрат на упаковку.

После 1 части, вот теперь часть 2.

По-прежнему нет необходимости в request.js, Axios, или углубляться в Node.js HTTP.

В этой статье я хотел бы дать небольшой обзор еще некоторых преимуществ и советов.

  • использование токенов носителя OAuth
  • Метод REST и URI
  • Типы данных
  • использование параметра URL
  • Полезные нагрузки кузова
  • Запросить подтверждение и использование «фигур»
  • Проверка ответа и как избежать проблем
  • изменить конечную точку на лету

использование токенов носителя OAuth

В качестве примера я использую облачную службу TIBCO для создания нового экземпляра кейса TIBCO Cloud Live Apps в системе управления делами.

Как видите, эта служба требует использования токена носителя для выполнения запроса к TIBCO Cloud.

Токен можно сгенерировать здесь:

Примечание. Подпишитесь на 30-дневную бесплатную пробную версию интеграции TIBCO Cloud

В AWS Lambda API можно вызывать, как здесь, с использованием чистых функций AWS SDK Core:

В этом примере показано, как использовать OAuth, тип REST, определение URI, обработку входного интерфейса, включая проверку, и как обрабатывать данные ответа для возврата вновь созданного Case InstanceID «caseReference».

Метод REST и URI

в этом примере вы найдете указанный здесь метод операции REST в разделе apiConfig, за которым непосредственно следует URI

http: {
         method: 'POST',
         requestUri: '/process/v1/processes'
}

AWS SDK поддерживает все виды методов, например GET, POST, PATCH, PUT, DELETE и т. Д.

Типы данных

Список поддерживаемых типов данных, которые будут использоваться в определениях операций

'string'
'integer'
'float'
'boolean'
'timestamp'
'structure'
'list'
'map'
'base64'
'binary'

использование параметра URI

Параметр URI может быть определен, как здесь, для элементов атрибут местоположения определяет, что параметр должен быть заменен в URI.

http: {
        method: 'GET',
        requestUri: '/item/{id}'
}

Раздел входных участников

members: {
       'Id': {
       // all kinds of validators are available
       type: 'string',
       // include it in the call URI
       location: 'uri',
       // this is the name of the placeholder in the URI
       locationName: 'Id'
}

Полезные нагрузки кузова

для отправки полезной нагрузки JSON в качестве тела запроса можно определить полезную нагрузку Input

payload: 'body',

затем тело может быть определено, например. как структура вместе с некоторыми членами

'body': {
         type: 'structure',
         required: [ 'id', 'fname', 'lname' ],
         members: {
                    'id': {
                       type: 'integer'
                    },
                    'fname': {},
                    'lname': {}
                  }
         }

Запросить подтверждение и использование «фигур»

Все запросы проверяются на наличие обязательных полей и типов данных перед отправкой запроса.

Концепция фигур очень полезна, если у вас есть повторяющаяся структура данных,
вам нужно определить сложные структуры для запроса.

apiConfig: {
        metadata: {
            protocol: 'rest-json' // API is JSON-based
        },
        operations: {
            complexPost: {
                http: {
                    method: 'POST',
                    requestUri: '/v1/complexPost'
                },
                input: {
                    "shape": "complexPostRequest"
                }
            }
        },
        'shapes': {
            'complexPostRequest': {
                type: 'structure',
                required: [ 'auth' ],
                payload: 'body',
                members: {
                   ...

Фигуры можно использовать в операциях как часть ввода, а фигуры и даже использовать в других фигурах. Как здесь для "shape": "получатель"

members: {
       'recipients': { 
             type: 'list', member: { 'shape': 'recipient'} 
    } 
   }
  }
 }
}, // <- back main shapes level
'recipient': {
     "type": "string"
}

Проверка ответа и как избежать проблем

Можно использовать даже проверку ответа, но это означает, что даже Типы ответа должны быть определены для каждой операции.

В некоторых случаях вам может потребоваться получить только часть данных, поступающих из службы REST, поэтому вы можете просто отключить синтаксический анализ ответа с помощью.

const service = new AWS.Service({
    // the API base URL
    endpoint: <url>,
    // don't parse all API responses
    convertResponseTypes: false,

Примечание. Это также может помочь избежать проблем с версией, поскольку вы можете полагаться только на основные сведения о базовой службе.

Служба REST, которая не возвращает JSON

некоторые службы не возвращают действительный JSON, например просто идентификатор в качестве результата, но AWS-SDK всегда пытается вернуть объект данных.

Здесь обходной путь, который снова возвращает действительный JSON из тела ответа.

Обходной путь «.on (‘ success ’)» и возврат «httpResponse.body» отлично справляются со своей задачей!

Смена конечной точки на лету

Иногда необходимо изменить URL-адрес конечной точки, например, необходимо выбрать другой регион. Это можно сделать, просто перенастроив объект конечной точки сервиса AWS SDK на лету перед вызовом сервиса.

var region="eu.";
service.endpoint.host=region+"example.com";
service.endpoint.hostname=region+"example.com";
service.endpoint.href="https://"+region+"example.com/";
       
service.getSomething({
...

TIBCO LABS

эта статья была написана по инициативе TIBCO LABS, полный многоразовый исходный код можно найти в общедоступном репозитории TIBCO LABS GitHub
вкл. Лицензия BSD с тремя пунктами.

Что дальше

Это было всего лишь продолжением, в настоящее время мы работаем над дополнительным контентом
- следите за обновлениями!

Спасибо за чтение и аплодисменты!