autorest/adal
на его замену, обратитесь к руководству по миграции azidentity.Пакет go-autorest предоставляет HTTP-клиент для использования с Autorest-сгенерированными пакетами API-клиента.
Также в этом репозитории предоставляется аутентификационный клиент, протестированный с Azure Active Directory (AAD), в пакете
github.com/Azure/go-autorest/autorest/adal
. Несмотря на его название, этот пакет поддерживается только как часть Azure Go SDK и не связан с другими "ADAL" библиотеками в github.com/AzureAD.### Обзор
Пакет go-autorest реализует HTTP-запросный конвейер, подходящий для использования в нескольких горутинах и предоставляет общие процедуры, используемые пакетами, сгенерированными с помощью Autorest.
Пакет разделяет отправку и получение HTTP-запросов на три фазы: Подготовка, Отправка и Ответ. Типичный шаблон:
req, err := Prepare(&http.Request{},
token.WithAuthorization())
resp, err := Send(req,
WithLogging(logger),
DoErrorIfStatusCode(http.StatusInternalServerError),
DoCloseIfError(),
DoRetryForAttempts(5, time.Second))
err = Ответить(resp,
ИгнорироватьТело(),
Закрыть())
Каждая фаза использует декораторы для модификации и управления обработкой. Декораторы могут сначала модифицировать данные, а затем передавать их дальше, передавать данные сначала, а затем модифицировать результат, или обернуться вокруг передачи данных (например, как это может сделать логгер). Декораторы выполняются в порядке, в котором они предоставлены. Например, следующий код:
req, err := Подготовить(&http.Request{},
СБазовымURL("https://microsoft.com/"),
СПути("a"),
СПути("b"),
СПути("c"))
установит URL на:
https://microsoft.com/a/b/c
```Подготовители и Ответчики могут быть использованы и переиспользованы (при условии, что поддерживаемые декораторы поддерживают это). Эффективное использование достигается путем создания одного или нескольких Подготовителей и Ответчиков, которые используются несколькими go-рутинами, и одного Отправителя, который используется несколькими отправляющими go-рутинами, все они связаны между собой с помощью входных/выходных каналов.Декораторы сохраняют свое состояние, переданное в замыкании (например, компоненты пути в приведенном выше примере). Будьте осторожны при использовании Подготовителей и Ответчиков только в контексте, где такое сохраненное состояние применимо. Например, может не иметь смысла использовать Подготовителя, который применяет строку запроса из фиксированного набора значений. Аналогично, использование Ответчика, который читает тело ответа в переданный структурированный объект (например, `ByUnmarshallingJson`), скорее всего, будет некорректным.
Ошибки, возникающие при работе с объектами и методами autorest, будут соответствовать интерфейсу `autorest.Error`.
Для получения более подробной информации обратитесь к включенным примерам. Для получения деталей о рекомендованном использовании этого пакета сгенерированными клиентами, обратитесь к описанию Клиента ниже.
### Помощники
#### Обработка дат Swagger
Спецификация Swagger (https://swagger.io), которая управляет AutoRest (https://github.com/Azure/autorest/), точно определяет два формата дат: дата и дата-время. Пакет github.com/Azure/go-autorest/autorest/date предоставляет производные объекты `time.Time`, чтобы обеспечить правильное парсинг и форматирование.
#### Обработка пустых значенийВ JSON отсутствующие значения имеют разные семантики по сравнению с пустыми значениями. Это особенно важно для сервисов, использующих HTTP-запрос PATCH. JSON, отправленный с запросом PATCH, обычно содержит только те значения, которые нужно изменить. Отсутствующие значения должны оставаться без изменений. Разработчики, следовательно, требуют способа как указания пустого значения, так и исключения значения из отправленного JSON. Пакет JSON на Go (`encoding/json`) поддерживает тег `omitempty`. Когда он указан, пустые значения исключаются из сгенерированного JSON. Поскольку Go определяет значения по умолчанию для всех базовых типов (например, "" для строки и 0 для int) и не предоставляет способа пометить значение как действительно пустое, пакет JSON рассматривает значения по умолчанию как пустые и исключает их из сгенерированного JSON. Это означает, что, используя базовые типы Go, закодированные через стандартный пакет JSON, невозможно создать JSON для очистки значения на сервере.Рабочее решение в сообществе Go заключается в использовании указателей на базовые типы вместо самих базовых типов в структурах, которые отображаются в JSON. Например, вместо значения типа `string` используется `*string`. Хотя это позволяет отличать пустые значения от тех, которые не должны изменяться, создание указателей на базовый тип (особенно константы или встроенные значения) требует дополнительных переменных. Например,
```go
s := struct {
S *string
}{ S: &"foo" }
не работает, в то время как
v := "foo"
s := struct {
S *string
}{ S: &v }
работает.
Чтобы облегчить использование указателей, подпакет to
содержит вспомогательные функции, которые конвертируют в и из указателей для базовых типов Go, имеющих аналоги в Swagger. Он также предоставляет вспомогательную функцию, которая конвертирует между map[string]string
и map[string]*string
, что позволяет JSON указывать, что значение, связанное с ключом, должно быть очищено. С использованием этих вспомогательных функций пример выше становится
s := struct {
S *string
}{ S: to.StringPtr("foo") }
go get github.com/Azure/go-autorest/autorest
go get github.com/Azure/go-autorest/autorest/azure
go get github.com/Azure/go-autorest/autorest/date
go get github.com/Azure/go-autorest/autorest/to
В v12.0.1 этот репозиторий ввёл следующие модули.
v12.3.0
) по-прежнему поддерживается для потребителей этого репозитория, которые ещё не перешли на модули.См. файл LICENSE. Этот проект использует кодекс поведения Microsoft для открытых источников. Для получения дополнительной информации см. часто задаваемые вопросы по кодексу поведения или свяжитесь с opencode@microsoft.com с любыми дополнительными вопросами или комментариями.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )