1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-go-autorest

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

ЗАМЕЧАНИЕ: Поддержка модулей в этом репозитории завершилась 31 марта 2023 года. Дополнительная информация доступна здесь.

Перенос на поддерживаемые SDK

go-autorest

GoDoc Статус сборки Отчет Go Report Card

Пакет 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

Использование с Go Modules

В v12.0.1 этот репозиторий ввёл следующие модули.

  • autorest/adal
  • autorest/azure/auth
  • autorest/azure/cli
  • autorest/date
  • autorest/mocks
  • autorest/to
  • autorest/validation
  • autorest
  • logger
  • tracingТегирование накопительных SDK-релизов в целом (например, v12.3.0) по-прежнему поддерживается для потребителей этого репозитория, которые ещё не перешли на модули.

Лицензия

См. файл LICENSE. Этот проект использует кодекс поведения Microsoft для открытых источников. Для получения дополнительной информации см. часто задаваемые вопросы по кодексу поведения или свяжитесь с opencode@microsoft.com с любыми дополнительными вопросами или комментариями.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Пакет go-autorest предоставляет клиент HTTP-запроса для использования с пакетами клиентов API, созданными при помощи Autorest. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-go-autorest.git
git@api.gitlife.ru:oschina-mirror/mirrors-go-autorest.git
oschina-mirror
mirrors-go-autorest
mirrors-go-autorest
main