<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Бэкенд и FastAPI on kodkod | Вводный курс</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/</link><description>Recent content in Бэкенд и FastAPI on kodkod | Вводный курс</description><generator>Hugo</generator><language>ru</language><copyright>מבואות קודקוד</copyright><atom:link href="https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/index.xml" rel="self" type="application/rss+xml"/><item><title>Бэкенд и HTTP: кто что делает, методы и коды состояния</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/01-what-is-backend/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/01-what-is-backend/</guid><description>&lt;h2 id="в-этом-уроке"&gt;В этом уроке&lt;/h2&gt;
&lt;p&gt;Урок состоит из двух глав — в том же порядке, что и в презентации:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Глава 1&lt;/strong&gt; — что такое бэкенд: клиент, сервер, база данных, API и Endpoint&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Глава 2&lt;/strong&gt; — методы HTTP и коды состояния&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="глава-1-что-такое-бэкенд--клиент-сервер-база-данных-api-и-endpoint"&gt;Глава 1: Что такое бэкенд — клиент, сервер, база данных, API и Endpoint&lt;/h2&gt;
&lt;h3 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h3&gt;
&lt;p&gt;Теперь мы переходим от программ, которые работают &lt;strong&gt;на нашем собственном компьютере&lt;/strong&gt;, к программам, с которыми &lt;strong&gt;другие&lt;/strong&gt; общаются по сети. Этот урок даёт общую картину и словарь:&lt;/p&gt;</description></item><item><title>FastAPI с нуля: установка, app = FastAPI(), первый маршрут и запуск сервера</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/04-fastapi-setup-first-route/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/04-fastapi-setup-first-route/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;p&gt;Этот урок — &lt;strong&gt;полная настройка с нуля&lt;/strong&gt; настоящего сервера:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Виртуальное окружение&lt;/strong&gt; (venv): куда устанавливаются библиотеки.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Установка FastAPI&lt;/strong&gt; через &lt;code&gt;pip&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;main.py&lt;/code&gt;&lt;/strong&gt;: импорт, создание &lt;code&gt;app&lt;/code&gt; и первый &lt;strong&gt;маршрут&lt;/strong&gt; (Route).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Запуск&lt;/strong&gt; через &lt;code&gt;uvicorn&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Проверка&lt;/strong&gt;: браузер, curl и автоматическая страница документации &lt;code&gt;/docs&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;В теме сетей мы видели, что включает «ручной» сервер: &lt;code&gt;bind&lt;/code&gt;, &lt;code&gt;listen&lt;/code&gt;, &lt;code&gt;accept&lt;/code&gt; и разбор текста. Это много работы, и легко упасть на плохом вводе. &lt;strong&gt;FastAPI&lt;/strong&gt; делает всё это за нас: принимает запрос, разбирает HTTP, находит нужную функцию, превращает ответ в JSON и проверяет типы. Мы пишем &lt;strong&gt;только логику&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Параметры пути, параметры запроса и тело</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/03-params-query-body/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/03-params-query-body/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;p&gt;Клиенту нужно сказать серверу, &lt;strong&gt;что&lt;/strong&gt; именно он хочет. Для этого есть три способа:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Способ&lt;/th&gt;
 &lt;th&gt;Где&lt;/th&gt;
 &lt;th&gt;Пример&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Параметр пути&lt;/strong&gt; (Path Parameter)&lt;/td&gt;
 &lt;td&gt;Часть самого пути&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/students/7&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Параметры запроса&lt;/strong&gt; (Query Parameters)&lt;/td&gt;
 &lt;td&gt;После &lt;code&gt;?&lt;/code&gt; в URL&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;/students?city=Haifa&amp;amp;limit=10&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Тело&lt;/strong&gt; (Body)&lt;/td&gt;
 &lt;td&gt;В теле запроса (JSON)&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;{&amp;quot;name&amp;quot;: &amp;quot;Dana&amp;quot;, &amp;quot;age&amp;quot;: 24}&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;В следующем уроке мы напишем первый сервер, и в FastAPI каждый из трёх способов определяется по-своему. Если не понимать разницу, информация попадает не туда: идентификатор — в тело, а пароль — в URL. А каждый настоящий API, которым вы будете пользоваться (GitHub, погода, платежи), использует все три.&lt;/p&gt;</description></item><item><title>FastAPI: параметры пути, строка запроса, тело и HTTPException</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/05-fastapi-params-query-body/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/05-fastapi-params-query-body/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;p&gt;В предыдущем уроке функции вообще не получали ввода. Теперь они будут получать три вида, которые мы изучили:&lt;/p&gt;</description></item><item><title>Middleware: код, который выполняется при каждом запросе</title><link>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/06-middleware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/ru/docs/backend-fastapi/06-middleware/</guid><description>&lt;h2 id="что-мы-изучим"&gt;Что мы изучим?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Какая возникает проблема, когда нужно что-то делать при &lt;strong&gt;каждом&lt;/strong&gt; запросе.&lt;/li&gt;
&lt;li&gt;Что такое &lt;strong&gt;Middleware&lt;/strong&gt; и как оно связано с уже знакомым нам &lt;strong&gt;декоратором&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;@app.middleware(&amp;quot;http&amp;quot;)&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;call_next&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;async&lt;/code&gt;&lt;/strong&gt; и &lt;strong&gt;&lt;code&gt;await&lt;/code&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Лог&lt;/strong&gt; и &lt;strong&gt;измерение времени&lt;/strong&gt; для каждого запроса в API студентов, а также &lt;strong&gt;заголовок&lt;/strong&gt;, который добавляется к каждому ответу.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="зачем-это-нужно"&gt;Зачем это нужно?&lt;/h2&gt;
&lt;p&gt;API студентов из предыдущего урока работает. Теперь мы хотим знать, &lt;strong&gt;что в нём происходит&lt;/strong&gt;: какой запрос пришёл, какой код вернулся и сколько это заняло. Первый способ, который приходит в голову, — добавить строку лога в каждый маршрут:&lt;/p&gt;</description></item></channel></rss>