Skip to content

Commit

Permalink
Update features.md
Browse files Browse the repository at this point in the history
  • Loading branch information
Xewus committed Aug 29, 2022
1 parent cefba3d commit 715534a
Showing 1 changed file with 22 additions and 25 deletions.
47 changes: 22 additions & 25 deletions docs/ru/docs/features.md
@@ -1,15 +1,15 @@
# Особенности
# Основные свойства

## Особенности и возможности FastAPI
## Основные свойства FastAPI

**FastAPI** предлагает вам следующее:

### Основан на открытых стандартах
### Базирование на открытых стандартах

* <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank"><strong>OpenAPI</strong></a> для создания API, включая объявления <abbr title="также известных, как HTTP-методы, такие, как: POST, GET, PUT, DELETE">операций</abbr> <abbr title="известные как: эндпоинты, маршруты, 'ручки' и т.п.">пути</abbr>, параметров, тела запроса, безопасности и т.д.


* Автоматическое документирование моделей данных в соответствии с <a href="https://json-schema.org/" class="external-link" target="_blank"><strong>JSON Schema</strong></a> (так как, спецификацмя OpenAPI сама основана на JSON Schema).
* Автоматическое документирование моделей данных в соответствии с <a href="https://json-schema.org/" class="external-link" target="_blank"><strong>JSON Schema</strong></a> (так как спецификацмя OpenAPI сама основана на JSON Schema).
* Разработан, придерживаясь этих стандартов, после тщательного их изучения. Эти стандарты изначально включены во фреймфорк, а не являются дополнительной надстройкой.
* Это также позволяет использовать автоматическую **генерацию клиентского кода** на многих языках.

Expand Down Expand Up @@ -69,15 +69,13 @@ my_second_user: User = User(**second_user_data)
!!! Информация
`**second_user_data` означает:

Передать ключи и значения словаря `second_user_data`, в качестве аргументов типа "ключ-значение", это эквивалентно: `User(id=4, name="Mary", joined="2018-11-30")`.

(*прим. перев. Для этой операции также используется термин "распаковка".)
Передать ключи и значения словаря `second_user_data`, в качестве аргументов типа "ключ-значение", это эквивалентно: `User(id=4, name="Mary", joined="2018-11-30")` .

### Поддержка редакторов (IDE)

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

В последнем опросе Python-разработчиков было выяснено, <a href="https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features" class="external-link" target="_blank">что наиболее часто используемой функцией редакторов, является "автодополнение"</a>.
В опросе Python-разработчиков было выяснено, <a href="https://www.jetbrains.com/research/python-developers-survey-2017/#tools-and-features" class="external-link" target="_blank">что наиболее часто используемой функцией редакторов, является "автодополнение"</a>.

Вся структура **FastAPI** основана на удовлетворении этой возможности. Автодополнение работает везде.

Expand All @@ -96,19 +94,19 @@ my_second_user: User = User(**second_user_data)
Вы будете получать автодополнение кода даже там, где вы считали это невозможным раньше.
Как пример, ключ `price` внутри тела JSON (который может быть вложенным), приходящего в запросе.

Больше не нужно писать неправильные имена ключей, метаться по документации или прокручивать окно редакторва вверх и вниз, в попытках узнать - использовали вы ранее `username` или `user_name`.
Больше никаких неправильных имён ключей, метания по документации или прокручивания кода вверх и вниз, в попытках узнать - использовали вы ранее `username` или `user_name`.

### Краткость
FastAPI имеет продуманные значения **по умолчанию** для всего, с произвольными настройками везде. Все параметры могут быть тонко подстроены так, чтобы делать то, что вам нужно и определять необходимый вам API.

Но, по умолчанию, всё это **"и так работает"**.

### Проверяет значения
### Проверка значений

* Проверка значений для большинства (или всех?) **типов данных** Python, включая:
* Объекты JSON (`dict`).
* Массивы JSON (`list`) с установленными типами элементов.
* Строковые (`str`) поля, с установленными минимальной и максимальной длинами.
* Строковые (`str`) поля с ограничением минимальной и максимальной длины.
* Числа (`int`, `float`) с минимальными и максимальными значениями и т.п.

* Проверка для более экзотических типов, таких как:
Expand All @@ -117,11 +115,11 @@ FastAPI имеет продуманные значения **по умолчан
* UUID.
* ...и другие.

Все проверки обрабатывается хорошо зарекомендовавшим себя и надежным **Pydantic**.
Все проверки обрабатываются хорошо зарекомендовавшим себя и надежным **Pydantic**.

### Безопасность и аутентификация

Встроены функции безопасности и аутентификации. Без каких-либо компромиссов с базами данных или моделями данных.
Встроеные функции безопасности и аутентификации. Без каких-либо компромиссов с базами данных или моделями данных.

Все схемы безопасности, определённые в OpenAPI, включая:

Expand All @@ -134,7 +132,7 @@ FastAPI имеет продуманные значения **по умолчан

Вдобавок все функции безопасности от Starlette (включая **сессионные cookies**).

Все инструменты и компоненты построены как многоразовые и легко интегрируются с вашими системами, хранилищами данных, реляционными и NoSQL базами данных и т. д.
Все инструменты и компоненты спроектированы для многократного использования и легко интегрируются с вашими системами, хранилищами данных, реляционными и NoSQL базами данных и т. д.

### Внедрение зависимостей

Expand All @@ -155,23 +153,23 @@ FastAPI включает в себя чрезвычайно простую в и

### Проверен

* 100% <abbr title="The amount of code that is automatically tested">покрытие тестами</abbr>.
* 100% <abbr title="Python type annotations, with this your editor and external tools can give you better support">аннотирование типов</abbr> в кодовой базе.
* 100% <abbr title="Количество автоматически проверямого кода">покрытие тестами</abbr>.
* 100% <abbr title="Аннотации типов Python, благодаря которым ваш редактор и другие инструменты могут обеспечить вам лучшую поддержку">аннотирование типов</abbr> в кодовой базе.
* Используется в реально работающих приложениях.

## Особенности и возможности Starlette
## Основные свойства Starlette

**FastAPI** основан на <a href="https://www.starlette.io/" class="external-link" target="_blank"><strong>Starlette</strong></a> и полностью совместим с НИМ. Так что, любой дополнительный код Starlette, который у вас есть, будет также работать.
**FastAPI** основан на <a href="https://www.starlette.io/" class="external-link" target="_blank"><strong>Starlette</strong></a> и полностью совместим с ним. Так что, любой дополнительный код Starlette, который у вас есть, будет также работать.

На самом деле, `FastAPI` - это класс, унаследованный от `Starlette`. Таким образом, если вы уже знаете или используете Starlette, большая часть функционала будет работать так же.

С **FastAPI** вы получаете все возможности **Starlette** (так как FastAPI это всего лишь Starlette на стероидах):

* Серьёзно впечатляющая производительность. Это <a href="https://github.com/encode/starlette#performance" class="external-link" target="_blank">один из самых быстрых и доступных Python-фреймворков, наравне с **NodeJS** и **Go**</a>.
* Серьёзно впечатляющая производительность. Это <a href="https://github.com/encode/starlette#performance" class="external-link" target="_blank">один из самых быстрых Python-фреймворков, наравне с **NodeJS** и **Go**</a>.
* Поддержка **WebSocket**.
* Фоновые задачи для процессов.
* События запуска и выключения.
* Тестовый клиент построен на `requests`.
* Тестовый клиент построен на библиотеке `requests`.
* **CORS**, GZip, статические файлы, потоковые ответы.
* Поддержка **сессий и cookie**.
* 100% покрытие тестами.
Expand All @@ -189,18 +187,17 @@ FastAPI включает в себя чрезвычайно простую в и

С **FastAPI** вы получаете все возможности **Pydantic** (так как, FastAPI основан на Pydantic, для обработки данных):

* **Никакого мозгоёбства** :
(*прим. перев: именно так в оригинале)
* **Никакой нервотрёпки** :
* Не нужно изучать новых схем в микроязыках.
* Если вы знаете аннотации типов в Python, вы знаете, как использовать Pydantic.
* Развлекайтесь с вашими **<abbr title="Интегрированное окружение для разработки, похожее на текстовый редактор">IDE</abbr>/<abbr title="программа проверяющая ошибки в коде">linter</abbr>/мозгом**:
* Структуры данных pydantic - это всего лишь экземпляры классов, определённые вами. Автодополнение, проверка кода, mypy и ваша интуиция - всё будет работать с вашими проверенными данными.
* Прекрасно сочетается с вашими **<abbr title="Интегрированное окружение для разработки, похожее на текстовый редактор">IDE</abbr>/<abbr title="программа проверяющая ошибки в коде">linter</abbr>/мозгом**:
* Потому что структуры данных pydantic - это всего лишь экземпляры классов, определённых вами. Автодополнение, проверка кода, mypy и ваша интуиция - всё будет работать с вашими проверенными данными.
* **Быстродействие**:
* В <a href="https://pydantic-docs.helpmanual.io/benchmarks/" class="external-link" target="_blank">тестовых замерах</a> Pydantic быстрее, чем все другие проверенные библиотеки.
* Проверка **сложных структур**:
* Использование иерархических моделей Pydantic; `List`, `Dict` и т.п. из модуля `typing` (входит в стандартную библиотеку Python).
* Валидаторы позволяют четко и легко определять, проверять и документировать сложные схемы данных в виде JSON Schema.
* Вы можете иметь глубоко **вложенные объекты JSON** и все они будут проверены и аннотированы.
* У вас могут быть глубоко **вложенные объекты JSON** и все они будут проверены и аннотированы.
* **Расширяемость**:
* Pydantic позволяет определять пользовательские типы данных или расширять проверку методами модели, с помощью проверочных декораторов.
* 100% покрытие тестами.

0 comments on commit 715534a

Please sign in to comment.