По вашему запросу ничего не найдено :(
Убедитесь, что запрос написан правильно, или посмотрите другие наши статьи:
img
Использование REST API является полезной функцией для реализации ваших сценариев. Вы можете получить доступ к новым функциям, а также расширить возможности создания новых, более продвинутых сценариев. Опыт многих пользователей показывает, что, когда начинаешь использовать REST API в скриптах, то чувствуешь себя довольно неуклюже и непривычно. В этой заметке мы обсудим: Что такое REST API Как читать документацию Как использовать API REST с PowerShell Некоторые советы и подсказки, как облегчить и улучшить практику Что такое "REST"? REST, или RESTful API, это API, который использует HTTP запросы для получения, добавления, удаления или манипулирования данными в различных сервисах. Как правило, то, что нужно сделать с данными, решается тем, какой HTTP-метод вы используете. Вот краткий список методов HTTP и их применение в REST API: GET-Read POST-Create PATCH-Partial update/modify PUT-Update/replace DELETE-Remove Данные, которые возвращает API REST, обычно представляются в формате JSON. Теперь давайте начнём с нашего первого API запроса! Что такое API Работа с документацией Для использования различных API REST необходимо научиться читать и интерпретировать документацию. К счастью, если вы знаете, как читать один тип документации, вы сможете быстро научиться читать другие. В этой статье мы используем petstore.swagger.io, так как он использует популярный фреймворк Swagger, который довольно часто используется в разработке. На предыдущем рисунке показана наиболее важная информация о конечных точках REST API: HTTP-метод-GET/POST/DELETE и т.д. URL-адрес, связанный с конечной точкой REST API (Базовый URL, как правило, представлен в верхней части страницы документации) Краткое описание Подробности Первая страница документации просто замечательная, и, как правило, с помощью этой информации можно выполнить большинство запросов, требующих использования метода HTTP GET. Но такие методы, как POST и SET, обычно требуют, чтобы вы щелкнули и развернули строку, чтобы получить больше информации. Если вы нажмете на одну из строк, то получите информацию, которая выглядит так: Здесь мы представили конечную точку REST, которая может создать новый объект pet. Здесь указывается, как должен выглядеть JSON, предоставленный в теле POST, и какой тип контента он принимает. Другие конечные точки REST указывают, что это за параметры, каким типом данных они должны быть и т.д. Это основы для чтения документации. Теперь, когда общие принцип более-менее ясны, пора начать использовать REST API с PowerShell. Получение первых данных (GET) Используя REST API с PowerShell обычно довольно просто, используется встроенные командлеты, таким образом, нет необходимости в дополнительных модулях. Мы собираемся извлечь данные с помощью метода GET в конечной точке /pet/{ petId}. Если развернуть конечную точку /pet/{ petId} в документации, можно увидеть, что {petId} на самом деле является параметром, который принимает целое число. Это делает URL-адрес для выборки объекта pet с идентификатором 1: https://petstore.swagger.io/v2/pet/1 В документации SWAGGER REST API обычно отображается базовый URL-адрес в верхней части страницы. Теперь начнем с PowerShell. Откройте окно терминала и введите: PS51 > Invoke-RestMethod -Method GET -ContentType "application/json" -Uri "https://petstore.swagger.io/v2/pet/1" id : 1 category : @{id=0; name=string} name : doggie photoUrls : {string} tags : {@{id=0; name=string}} status : available Поскольку в ответе от сервера возвращается тип содержимого "application/json" используется метод Invoke-RestMethod, который автоматически преобразует возвращаемый JSON в объект. Ошибка 404 Not found, как правило, означает, что объект не найден или URL-адрес введен неправильно. Итак, мы выполнили первый вызов REST API. Но возможности метода GET для получения данных довольно ограничены, так что давайте создадим что-нибудь с помощью метода POST. Создание объекта методом POST Метод POST чаще всего используется для создания, например, пользователей или записей и т.д. Запрос POST отправляет BODY, содержащий информацию, конечной точке REST, обычно в формате JSON, но он также может быть в виде формы с кодировкой URL. Вы узнаете, как создать объект JSON, который можно отправить в конечную точку/pet. Можно увидеть, как должен выглядеть JSON, если развернуть строку POST/pet в документации. Начнем с создания хэштаблицы, который можно преобразовать в объект JSON. Raw JSON следует избегать в скриптах PowerShell, поскольку он ограничивает его возможности. $Body = @{ id = 19 category = @{ id = 45 name = "Whatever" } name = "Dawg" photoUrls = @( "string" ) tags = @( @{ id = 0 name = "string" } ) status = "available" } Если вам трудно создать хештаблицу, который преобразуется в нужный JSON, установите модуль PsdKit и используйте команду $ JsonString | ThreadTo-Psd Теперь имеется хэш-таблица, которую можно преобразовать в строку JSON и POST в конечную точку/pet: $JsonBody = $Body | ConvertTo-Json $Uri = "https://petstore.swagger.io/v2/pet" Invoke-RestMethod -ContentType "application/json" -Uri $Uri -Method Post -Body $JsonBody id : 19 category : @{id=45; name=Whatever} name : Dawg photoUrls : {string} tags : {@{id=0; name=string}} status : available При создании объекта он обычно получает созданный для подтверждения объект. Использование DELETE. Метод DELETE используется для удаления данных, а применение очень схоже с методом GET. PS51 > Invoke-RestMethod -Method DELETE -ContentType "application/json" -Uri "https://petstore.swagger.io/v2/pet/1" Только убедитесь, что не удалите ничего важного Использование PUT Метод PUT используется для обновления данных. Это делается аналогично методу POST путем представления полного или частичного объекта JSON: PS51> $Body = [PSCustomObject]@{ id = 19 name = "Dawg with a new name" } PS51> $JsonBody = $Body | ConvertTo-Json PS51> $Uri = "https://petstore.swagger.io/v2/pet" PS51> Invoke-RestMethod -ContentType "application/json" -Uri $Uri -Method PUT -Body $JsonBody id name photoUrls tags -- ---- --------- ---- 19 Dawg with a new name {} {} Обычно API REST возвращает объект JSON с использованными и/или обновленными данными. Можно увидеть, что объект был обновлен с помощью метода GET: PS 51> Invoke-RestMethod -ContentType "application/json" -Uri "https://petstore.swagger.io/v2/pet/19" id : 19 category : @{id=45; name=Whatever} name : Dawg with a new name photoUrls : {string} tags : {@{id=0; name=string}} status : available Создание функций Писать эти команды каждый раз вручную может стать довольно утомительным и на самом деле не масштабируемым. Если мы вызываем конечную точку несколько раз, то лучше создать для нее функцию. Это довольно просто и нужно написать всего несколько строк: Function Get-PetstorePet { [cmdletbinding()] param( # Id of the pet [Parameter(Mandatory,ValueFromPipeline)] [int]$Id ) Begin{} Process{ $RestMethodParams = @{ Uri = "https://petstore.swagger.io/v2/pet/$Id" ContentType = "application/json" Method = "GET" } Invoke-RestMethod @RestMethodParams } End{} } После создания функции ее можно вызвать в сценарии: PS51> Get-PetstorePet -Id 1 id name photoUrls tags -- ---- --------- ---- 1 Doggie {http://picture.url} {} Это можно сделать и для метода POST для создания нового объекта pet в Petstore: Function Add-PetstorePet { [cmdletbinding()] param( # Id of the pet [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [int]$Id, # Name of the pet [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string]$Name, # Status of the pet (available, sold etc) [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string]$Status, # Id of the pet category [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [int]$CategoryId, # Name of the pet category [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string]$CategoryName, # URLs to photos of the pet [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [string[]]$PhotoUrls, # Tags of the pets as hashtable array: @{Id=1;Name="Dog"} [Parameter(Mandatory,ValueFromPipelineByPropertyName)] [Hashtable[]]$Tags ) Begin{} Process{ $Body = @{ id = $Id category = @{ id = $CategoryId name = $CategoryName } name = $Name photoUrls = $PhotoUrls tags = $Tags status = $Status } $BodyJson = $Body | ConvertTo-Json $RestMethodParams = @{ Uri = "https://petstore.swagger.io/v2/pet/" ContentType = "application/json" Method = "Post" Body = $BodyJson } Invoke-RestMethod @RestMethodParams } End{} } И вызов этой функции PowerShell намного упрощает задачу: PS51> $AddPetStorePetsParams = @{ Id = 44 Name = "Birdie" Status = "available" CategoryId = 50 CategoryName = "Hawks" PhotoUrls = "https://images.contoso.com/hawk.jpg" Tags = @( @{ Id=10 Name="Not eagles" } ) } PS51> Add-PetStorePet @AddPetStorePetsParams id : 44 category : @{id=50; name=Hawks} name : Birdie photoUrls : {https://images.domain.com/hawk.jpg} tags : {@{id=0}} status : available Возможно, что многие модули, которые вы ежедневно используете, состоят из функций, который за кулисами используют REST API. Заключение Обучение работы с REST API, главным образом основано на чтении документации. Мы использовали документацию на основе SWAGGER в этом посте, так как она представляет, как могут выглядеть другие стили документации. Кроме того, преобразование вызовов API в функцию может сэкономить много времени, упростить работу и очистить сценарии.
img
Само слово состоит из двух частей - Dev (Development), то есть разработка и Ops (Operations) - эксплуатация. Разработка и эксплуатация. Ок, запомнили. Но что это конкретно? Танец? Напиток? Профессия? Не совсем, девопс - это модель взаимодействия тех, кто пишет код с теми, кто этот код заставляет работать - раскатывает в продакшн, управляет серверами, сетью и вот этим вот всем. Такая профессия называется ДевОпс-инженер Любая компания, которая делает деньги на разработке программного обеспечения, хочет быстро расти, быть технологичнее и быстрее своих конкурентов, при это не забывать о наличии печенек и вкусного чая на кухне в офисе. У серьезных компаний большая и сложная инфраструктура: куча серверов, коммутаторов, маршрутизаторов, и все это еще и раскидано географически по миру. А чтобы код их приложения заработал у пользователей, без лагов, багов и задержек, нужно учесть кучу факторов! До появления методологии DevOps, при разработке, могли возникать случаи, когда что-то не работает, или работает не так, как хотелось бы: «Мой код превосходен, а сервера сконфигурированы хреново, а еще ваша сеть, кхм-кхм, - говно» - говорит разработчик «Сеть работает отлично, задержка в пределах нормы, а вы там что то наговнокодили» - парирует администратор И понеслась. У сетевого администратора не хватало компетенций и информации о том как надо настраивать сервера, в результате чего приходилось подключать для этого разработчиков, у которых в свою очередь не было компетенций админов. Короче, ДевОпс инженер это по сути системный администратор который работает с программным обеспечением, серверами и сетью, а также понимает как происходит процесс разработки и умеет программировать. Новый виток эволюции админа, который умеет больше и, конечно, получает больше денег. Девопс исключит перекидывание мячика из отдела разработки к администраторам, значительно ускорит релизы новых фич и исправлений в продукте, откроет дорогу к легкому масштабированию и повышению надежности инфраструктуры, превратит вашу разработку в полноценный конвейер, даст прохладу, влажность и, скорее всего, силу земли Итак, вот базовые вещи, которые должен знать девопс инженер: Легко ориентироваться в Windows и Linux операционных системах - кстати, по ним у нас есть собственные курсы и никто не помешает тебе пройти бесплатный вводный урок по ссылке. Нужно знать сетевые технологии на уровне Cisco CCNA - вот это совпадение! У нас также есть большой курс по сетевым технологиям, который поможет тебе познать самые нужные сетевые аспекты работы DevOps. ДевОпс должен знать инструменты для управления конфигурацией и автоматизации серверов Chef, Puppet, Ansible. И уметь писать скрипты. Ну минимум на Python. Зачем это надо? Как раз чтобы работать с этими инструментами. Этого достаточно, чтобы уже получать в среднем по РФ 100-200 тысяч рублей! Ну и как видавшие девопсов добавим, что будет отлично так же знать: Про непрерывную интеграцию и доставку (CI/CD) – сборка и тестирование конечного продукта (Jenkins, TeamCity, Bamboo) Распределенный контроль версий (Git, Mercurial, Subversion, CVS) Контейнеризацию и оркестровку (Docker, Kubernetes, Docker Swarm) Управление инфраструктурой как кодом (Puppet, Chef, Ansible, Salt) Виртуализацию (Vagrant, VMware) Подробнее об этих и других инструментах можно прочитать в этой статье.
img
Подключения прибора Для подключения прибора к измеряемому потоку используются разъемы на задней (или верхней) стенке прибора: Tx OUTliUT выход, или передача прибора подключить к Rx (прием) измеряемого потока; Rx INliUT вход, или прием прибора подключить к Tx (передача) измеряемого потока. На левой стенке расположен разъем EXT PWR для подключения адаптера внешнего питания. Прибор продолжительное время (несколько часов) может работать от встроенных аккумуляторов. Включение прибора Нажать клавишу <On> - через 2-3 секунды прибор включится. В правом верхнем углу указано название текущего меню. В нижней части дисплея указано назначение функциональных клавиш в данном режиме (смотри рисунок). При включении прибора отображается главное меню "Main menu". Если вы не знаете, в каком меню находитесь и что делать дальше, нажмите кнопку <Main menu>. Далее, следуйте инструкции. Контроль потока и подключения В главном меню (Main menu) нажать кнопку <-more-> (клавиша S6), до появления в левом нижнем углу пункта меню <Monit>. Выбрав данный пункт (клавишей S1), вы попадаете в меню мониторинга, где возможно контролирование потока и отдельного канального интервала. В правом верхнем углу отображается состояние потока: No signal нет сигнала на входе прибора. Возможно перепутаны прием/передача оборудования, или неисправен соединительный шнур; AIS сигнал удаленной аварии. На дальнем конце измеряемый поток не нагружен; Frame sync loss потеря цикловой синхронизации. Прибор принимает не тот сигнал, который передает. Возможно отсутствует шлейф на дальнем конце, или подключен не тот поток. *Words* - "слова". Аварии отсутствуют - прибор принимает передаваемый им сигнал и готов к проведению измерений. Проведение измерений Для измерения потока E1 необходимо выполнить следующее: Выйти в главное меню нажатием кнопки <MAIN MENU> Нажать Menu1, основные параметры, убедиться, что выставлены параметры: Первый столбец: [Mode] режим, возможны значения: RX/TX прием/передача, измерения по завороту; RX прием, измерения на рабочем потоке, параллельно; THROUGH через, поток пропускается через прибор; DELAY. Для измерений по завороту необходимо выбрать режим RX/TX [Interface] - G.703 интерфейс G.703; [Line code] - HDB3линейный код HDB3; [Framing] - liCM30формат кадра ИКМ-30; liCM-31 с использованием 16-го ки; OFFбез цикловой структуры. Рекомендации по выбору режима: выставить PCM-31. Если прибор не может засинхронизироваться, возникает аварийная сигнализация переключить в режим PCM-30. При невозможности проведения измерений в данном режиме возможно(но не рекомендуется) проведение измерений без цикловой структуры (режим OFF). [Termination] 75/120Ω - сопротивление интерфейса 75/120 Ом; [Tx Clc src] - INTERNисточник синхронизации передачи внутренний или FROM RX от сигнала приема; [Kblis] - 2048 скорость передачи 2048 кбит/с; Второй столбец: [V.11 slot] - OFF ввод/вывод данных в какой-либо канальный интервал посредством интерфейса V.11 откл.; [Rx slots] - канальные интервалы, по которым производится измерения, принимает значения: OFF откл; 1(С1) - 1 канальный интервал (можно использовать любой ки от 1 до 31, не заблокированный в данном режиме); nx64 несколько канальных интервалов, в данном режиме возможен выбор нескольких или всех канальных интервалов для проведения измерений. При выборе пункта <nx64> открывается меню "Rx Slots (BERT)", в котором производится выбор канальных интервалов: ALL выбрать все Clear очистить выбор (действие, обратное предыдущему) Select выбрать ки, обозначенный курсором De-select отменить выбор ки, обозначенного курсором Return возврат в предыдущее меню Рекомендации по выбору ки: как правило, измерения проводятся по полному потоку, то есть должны быть выбраны все канальные интервалы, последовательность действий: <Rx slots> <nx64> <ALL> <Return> [Rx audio] OFF канальный интервал, который будет прослушиваться через встроенный динамик. Возможно указание любого ки, или отключение опции.На ход измерений не влияет; [Rx signaling] OFF; [Tx slots] - канальные интервалы, по которым передается тестовая последовательность. Возможны режимы: OFF - откл. передача не осуществляется; USER - по выбору пользователя; AS RX - в соответствии с приемом. Выбраны те канальные интервалы, которые контролируются по приему; IDLE - свободно, передается последовательность IDLE (задается в следующем меню, обозначает неиспользуемые ки); 1(С1) - 1 канальный интервал (можно использовать любой ки от 1 до 31, не заблокированный в данном режиме). Рекомендации по выбору ки: рекомендуется выбрать режим <AS RX> Примечание: в режиме Framing OFF параметры второго столбца отсутствуют. В режиме Framing PCM31 параметр Rx signaling отсутствует. Перейти в следующее меню menu2, параметры тестовой последовательности: Параметры по умолчанию: [Idle liattern] 0110 1010; [Bert liattern] 215 -1; [Bert signaling] 1010; [Idle signaling] 1010; Bits/Block - 1000; NFAS/NMFAS - norm; Tx logic - norm; Rx logic - norm. Некоторые параметры могут отсутствовать в зависимости от выбора режима Framing. Ничего изменять не нужно. Перейти в следующее меню menu3, проконтролировать параметры: [Current test] - текущее измерение, при многократных измерениях для сохранения результатов номер измерения следует поменять на следующий. Например, если произведено измерение под № 5, то при следующем измерении следует установить №6. Тогда в ячейке №5 результаты сохранятся; [Timer] - On таймер включен. В меню Timer необходимо задать продолжительность тестирования, для этого необходимо навести указатель на пункт Timer, нажать <edit> - откроется timer menu: [Start time] - manual запуск теста - вручную; [Duration] - продолжительность. Userзадана пользователем, далее необходимо указать продолжительность тестирования: 0 days (дни) 0 hrs (часы) 15 mins (минуты). При необходимости возможен режим Continпродолжительный, до остановки пользователем. Далее нажать Return, чтобы вернуться в предыдущее меню. [Autolirint] - Off - автоматическая печать выключена; G.821 - ITU-T - контроль по протоколу G.821 включен, согласно рекомендации ITU-T; [Alarms] All on - контроль аварий все аварии; [Resolution] - HRS/MINS - частота записи результатов часы/минуты; [Beelier] - Off; [Err inject] - Ratio - ввод ошибок. Нажать кнопку <Run> - запуск. Начнутся измерения. На экране появляется информация о производимых измерениях: правая часть экрана краткая информация о параметрах измерений, левая часть экрана надпись ОКили присутствующие аварии и зафиксированные ошибки. RX/TX - режим измерений; G.703, liCM31 - основные параметры измерений; Rx - звездочкой обозначены измеряемые канальные интервалы, если стоит точка канальный интервал пропускается; Total seconds - время в секундах, прошедшее с начала измерений; Bit err ratio - коэффициент битовых ошибок. Перенос результатов измерений в ПК По завершении измерений на экране отображаются краткие результаты. Для переноса измерений на компьютер необходимо: Выключить прибор и перенести его к месту установки компьютера. Подключить прибор к компьютеру, для этого: порт V.24/RS-232 прибора (с правой стороны) подключить через переходной соединительный кабель к com-порту компьютера. Запустить на компьютере программу HyperTerminal. (В программе HyperTerminal должен быть задан номер com-порта, к которому подключен прибор и параметры соединения: скорость 9600 бит/с; биты данных 8, четность нет; стоповые биты 1; управление потоком Xon/Xoff) Включить прибор. Найти пункт меню "Memory". Если его нет, можно нажать кнопку <more>, для отображения других возможностей меню до появления нужной кнопки. В меню "Memory" отображаются все сохраненные результаты, установить курсор на нужном пункте (можно определить по дате и времени измерений) Нажать <Results>, на экране появятся результаты измерений, нажать кнопку <Print>, результаты будут переданы в окно HyperTerminal. Из окна программы результаты можно скопировать и вставить в любой текстовый документ: WordPad (блокнот) или Microsoft Word. _____________________________________________________________________________ ACTERNA E1 SERVICE TESTER EST-125 09:32 11 Mar 2011 _____________________________________________________________________________ Printout of menu settings *Setup Menu 1* Mode RX/TX Interface G.703 Line code HDB3 Framing PCM31C Termination 75/120 Ohm Tx Clk source INTERN kbps 2048 V.11 OFF Rx slots BERT-Rx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Rx audio OFF Tx slots AS RX *Setup Menu 2* Idle pattern 0000 0000 BERT pattern 2^15-1 Bits/Block 1000 Rx logic NORM Tx logic NORM *Setup Menu 3* Autoprint OFF G.821 ITU-T Multiframe ITU-T Alarms USER Resolution HRS/MINS *Alarm Display* AIS ON Fr Sync ON All ones ON All zeros ON Patt loss ON Patt Inv Slip ON Dist Fr ON Bit error ON CRC err ON FAS err ON Code err ON _____________________________________________________________________________ ACTERNA E1 SERVICE TESTER EST-125 09:33 11 Mar 2011 _____________________________________________________________________________ Printout of test results for test number 2 Start time 09:25 10 Mar 2011 Stop time 09:25 11 Mar 2011 Total test time (seconds) 86400 Line rate 2047994 Total code errors received 0 Total mean Code Error Ratio 0.000E 0 Bit rate 1983995 Total bits received 1.174E 11 Total errors received 0 Total mean Bit Error Ratio 0.000E 0 Total blocks received 1.174E 8 Total block errors received 0 Total mean Block Error Ratio 0.000E 0 Seconds of no signal 0 Seconds of AIS Seconds of pattern sync loss 0 Seconds of Pattern Inverted 0 Seconds of all ones 0 Seconds of all zeros 0 Seconds of slip 0 Seconds of frame sync loss 0 Seconds of distant frame alarm 0 Total FAS word errors 0 Total number of frames 0 Total number of frames 6.912E 8 Total mean FAS word error ratio 0.000E 0 Total CRC word errors 0 Available time 86400 100.00000% Unavailable time 0 0.00000% Error free seconds 86400 100.00000% Errored seconds PASS 0 0.00000% Severely errored seconds PASS 0 0.00000% Severely errored seconds PASS 0 0.00000%
ВЕСЕННИЕ СКИДКИ
40%
50%
60%
До конца акции: 30 дней 24 : 59 : 59