<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Backend ו-FastAPI on kodkod | מבואות קודקוד</title><link>https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/</link><description>Recent content in Backend ו-FastAPI on kodkod | מבואות קודקוד</description><generator>Hugo</generator><language>he</language><copyright>מבואות קודקוד</copyright><atom:link href="https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/index.xml" rel="self" type="application/rss+xml"/><item><title>Backend ו-HTTP: מי עושה מה, Methods ו-Status Codes</title><link>https://intro-kodkod-6.nm-ambition.com/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/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;פרק ראשון&lt;/strong&gt; — מהו Backend: Client, Server, Database, API ו-Endpoint&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;פרק שני&lt;/strong&gt; — HTTP Methods ו-Status Codes&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="פרק-ראשון-מהו-backend--client-server-database-api-ו-endpoint"&gt;פרק ראשון: מהו Backend — Client, Server, Database, 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(), Route ראשון והרצת השרת</title><link>https://intro-kodkod-6.nm-ambition.com/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/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;Route&lt;/strong&gt; ראשון.&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;בנושא מחשב, מערכת הפעלה ורשת כתבנו שרת &amp;ldquo;ידני&amp;rdquo; עם &lt;code&gt;socket&lt;/code&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>Path Params, Query Parameters ו-Body</title><link>https://intro-kodkod-6.nm-ambition.com/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/docs/backend-fastapi/03-params-query-body/</guid><description>&lt;h2 id="מה-נלמד"&gt;מה נלמד?&lt;/h2&gt;
&lt;p&gt;Client צריך להגיד לשרת &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;Path Parameter&lt;/strong&gt;&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;Query Parameters&lt;/strong&gt;&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;Body&lt;/strong&gt;&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 כל אחת מהשלוש מוגדרת בדרך אחרת. אם לא מבינים את ההבדל, שמים מידע במקום הלא נכון: מזהה ב-Body, או סיסמה ב-URL. וכל API אמיתי שתצרכו (GitHub, מזג אוויר, תשלומים) משתמש בשלושתן.&lt;/p&gt;</description></item><item><title>FastAPI: Path Params, Query, Body ו-HTTPException</title><link>https://intro-kodkod-6.nm-ambition.com/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/docs/backend-fastapi/05-fastapi-params-query-body/</guid><description>&lt;h2 id="מה-נלמד"&gt;מה נלמד?&lt;/h2&gt;
&lt;p&gt;בשיעור הקודם הפונקציות לא קיבלו שום קלט. עכשיו הן יקבלו את שלושת הסוגים שלמדנו:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;קלט&lt;/th&gt;
 &lt;th&gt;איך FastAPI יודע&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Path Parameter&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;שם בסוגריים מסולסלים בנתיב: &lt;code&gt;&amp;quot;/students/{student_id}&amp;quot;&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Query Parameter&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;פרמטר של הפונקציה שלא מופיע בנתיב&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;Body&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;פרמטר שהטיפוס שלו הוא &lt;strong&gt;מודל Pydantic&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ובנוסף: &lt;strong&gt;Type Hints&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;status_code&lt;/code&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;code&gt;HTTPException&lt;/code&gt;&lt;/strong&gt;, ושגיאת &lt;strong&gt;422&lt;/strong&gt; האוטומטית.&lt;/p&gt;</description></item><item><title>Middleware — קוד שרץ על כל בקשה</title><link>https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/06-middleware/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/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;Decorator&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;Header&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;: איזו בקשה הגיעה, איזה קוד חזר, וכמה זמן היא לקחה. הדרך הראשונה שעולה לראש — להוסיף שורת לוג לכל Route:&lt;/p&gt;</description></item><item><title>מערך שיעור: מבוא ל-Backend ו-HTTP</title><link>https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/instructor-fastapi/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://intro-kodkod-6.nm-ambition.com/docs/backend-fastapi/instructor-fastapi/</guid><description>&lt;p&gt;&lt;strong&gt;משך:&lt;/strong&gt; יום לימוד מלא — 6 שעות אקדמיות (270 דקות).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;מטרת השיעור:&lt;/strong&gt; הסטודנטים יבינו את תפקיד ה-Backend ואת שפת ה-HTTP, ויקימו מאפס שרת FastAPI שמקבל Path, Query ו-Body ומחזיר קודים נכונים.&lt;/p&gt;</description></item></channel></rss>