
Create a New Project בוחרים שפת C#, פלטפורמה All, וסוג פרויקט ASP.NET Core Web API. נותנים לו שם (למשל Countries REST API) ובוחרים גרסת .NET העדכנית ביותר (8 בזמן ההרצאה).HTTPS מופעל (הכרחי לאתר אמיתי, אך לא לפיתוח מקומי), לא מסמנים Enable Docker (לא נדרש בפרויקט הזה), לא מסמנים Enable OpenAPI support (Swagger), מסמנים Do not use top-level statements (כדי לראות מחלקת Program ופונקציית Main מפורשות), ולא מסמנים Use controllers - וכך מתקבל פרויקט מסוג Minimal API במקום Controllers.WeatherForecast ואת כל מה שקשור אליו, וגם קוד לא נדרש של Authentication ו-Redirection, כדי להישאר עם פרויקט נקי.Properties של הפרויקט מגדירים Default Namespace אחיד (למשל שם הפרויקט), כך שגם קבצים עתידיים יקבלו אותו namespace, עם נקודה-פסיק בסוף השורה כדי לחסוך הזחה.הטקסט המלא של הדקות הראשונות בהרצאה «יצירת פרויקט REST API» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
כרי שהייתנו את כל ההקדמה הזאת של מה זה Rest API ופרוטוקולים ומצגות, אנחנו סוף סוף נכנסים לבנייה של הדברים. מה שאנחנו רוצים קודם כל לבנות במודול הקצר הזה, זה Rest API מינימלי.
זהו Rest API שמכיל מעט מאוד קוד. אז בואו ניגש ונפתח את Visual Studio.net, נבצע Create a New Project, נתחיל לבחור פה את הפילטרים המתאימים.
הדבר הראשון שאנחנו רוצים זה כמובן שפת C-Sharp, פלטפורמה נשאר ב-All, וסוג הפרויקט, כאן למטה יש לנו Web API, Web API זה בעצם Rest API.
אז יש לנו אפשרות לבחור את זה, שזה ASP.NET Core, Web API זה מה שאנחנו רוצים. בואו נעשה Next, אני רואה שהוא כבר מצביע לי פה על C. projects, יכול להיות שהוא יצפיע לכם על איזשהו מקום אחר, אתם יכולים לשמור אותו באיזה תקיעה שאתם רוצים.
אנחנו רוצים לבנות איזשהו rest API שנותן מידע לגבי מדינות. בואו נקרא לו countries rest API. בגלל שהפרויקט הזה הוא ממש ממש מינימלי ואני לא הולך שיהיה לי עוד פרויקטים אז קובץ הסלושן יהיה באותו קובץ של הפרויקט לשיקולכם בואו נבצע next ויש לנו פה מספר שאלות שהמערכת שואלת אותנו.
קודם כל תשימו לב שכבר יש פריימורק מספר 8,.NET Core הכוונה, גרסה 8 ולא רק גרסה 7, נכון להיום, בהמשך בטח יום שידורים נוספים. מה אנחנו רוצים?
אז בואו נעבור ונראה את האפשרויות שיש לנו בפרויקט Web API. אפשרות ראשונה, אם אנחנו רוצים שהפרויקט שלנו נתמוך גם ב-HTTPS, זאת אומרת שהפרויקט שלנו ניתן לגלוש אליו גם עם...
פרוטוקול HTTP וגם עם HTTPS. HTTPS זה פשוט HTTP, והוא secured. ה-S זה secured. זה אומר שכל התקשורת היא בעצם הופכת להיות מוצפנת.
אם אנחנו מעלים באמת באמת אתר לאוויר, הוא די חייב להיות היום HTTPS. אם הוא לא HTTPS, אתם תפנים יעשו המון בעיות, ויזאירו את הלקוחות מלגלו שליו, אתם לא רוצים לבנות אתר שהוא לא HTTPS היום.
לצורך פיתוח כמובן אנחנו יכולים לעבוד עם HTTP. כשמעלים אותו לאתר האמיתי הגיוני שהוא htps אז בואו נשאיר את זה enable docker זה בעצם מאפשר לנו להריץ את הפרויקט על קונטיינר בתוך קונטיינר סגור קונטיינר זה כמו מיני מכונה וירטואלית שמכילה את כל מה שהיא צריכה בתוך עצמה כמו מחשב בתוך מחשב
כזה כל הקונספט הזה של docker הוא סופר חשוב אבל זה לא חלק מכל הקורס של.NET Core אולי נראה בהמשך אם יהיה זמן, אולי נראה איזה דמו קווה של איך להריץ משהו על דוקר, אבל בטח שלא כרגע, אז אני לא מסמן את זה.
יש לנו פה enable open API support, זה נקרא swagger הדבר הזה, אולי בהמשך נסתסק עם זה, כרגע אני לא מסמן את זה. do not use top level statement, אני תמיד מסמן, אני אישית לא אוהב להשתמש בtop level statement, דיברנו על זה אם אני לא טועה בעבר.
וזה basically בתאר שבמחלקה הראשית אין פונקציית main, אני לא אוהב את זה, אני אישית כן אוהב לראות את הקלאס ואת המיין, אז אני מסמן do not use top level statement, וכרגע אני לא מסמן use controllers, בהמשך נראה מה זה controllers, אם אני מסמן use controller אז הוא אומר,
use controllers instead of minimal APIs, ואנחנו רוצים בדוגמה הזאת לראות מה זה מינימל API, זה היותר. אני אוהב להתחיל מהפשוט למורכב, לכן אני לא מסמן את זה, בכדי שהוא לא יבנה לי קונספט שנקרא Controllers, ואוטומטית מה שיבנה לי זה קונספט שנקרא Minimal API, Minimal Web API, אז זה הדבר שגורם לזה
להיות מינימלי, בואו נבצע Create, והמערכת הולכת ויוצרת לנו איזשהו פרויקט, ונותנת לנו איזשהו קוד מוכן כבר, מה שנקרא מהן Hello World כזה, ואו.
דמו, ומה שאני רואה זה קודם כל איזושהי מחלקה שנקראת Weather Forecast, זאת אומרת שהדמו פרוג'קט ש Visual Studio.net נותנת לנו זה בעצם כאילו Web API שנותן לנו תחזיק מזג אוויר, אז היא אומרת לנו הנה אנחנו חושפים מידע לגבי מזג אוויר אז למזג אוויר יש תאריך וטמפרטורה בצלזיוס וטמפרטורה
בפרנהייט וסיכום יש לנו פה את הפרוגרם מחלקה, יש לנו פה מיין הנה הפונקציה, בגלל שאנחנו לא משתמשים בטופ לבל, אז אנחנו רואים את program ואת main, שזה מה שאני אוהב לראות, ועוד כל מיני קודים, שחלק מהם אנחנו נעיף, אבל כרגע אם אני פשוט בריץ את זה, האמת אני עדיין לא יריץ, אני רוצה לראות את זה.
זה בעצם סדרה של אפשרויות להרצאה, ובי דיפולט, בגלל שאמרנו לו, להשתמש ב... כלומר לאפשר, https הזו, אוטומטית מסמן לנו https. אז בכוונה, לפני שאני אמריץ את זה, אני אעביר את זה ל-HTTP.
את זה, ועכשיו אני אריץ, Ctrl F5, והמערכת רצה, ונותנת לי את החזית, סתם פיקטיבית כזה, בואו רגע אני טיפה נגדיל, של מזג אוויר, שימו לב, שיש לי פה גלישה, ואני רואה שאני נמצא ב, אני אתיק את זה רגע, וידביק את הנתיב המלא, אני רואה שאני נמצא על HTTP, אז אני רואה כאילו, JSON
שמוחזר, הדפנפן שלי, מאפשר לעשות פה, Pretty Print, ולהציג את זה בצורה כזאת, זו רק קצת יותר יפה, ואני רואה את JSON, כי אנחנו, הורס את ה-API, אז הוא מחזיר לי JSON, עם סתם נתונים פיקטיביים, של מזג אוויר, בכל מיני מקומות.
אם אנחנו, נגיד, לא תקשיב, אני רוצה להריץ את זה על HTTPS, בואו נעביר את זה ל-HTTPS, אז הוא יגיד, אין בעיה, אבל, תראו מה הוא אומר לי, הוא, האמת, מריץ את זה.
הוא לא היה אמור להריץ, הוא היה אמור לתת לי, הזהרה מסוימת. אם אתם מריצים את זה, הוא ייתן לכם איזושהי הודעה, האם אתם בטוחים שאתם רוצים להריץ, תגידו לו כן, והוא בעצם יג'נרט לכם מה שנקרא, to generate, איזושהי תעודה דיגיטלית, יתקין אותה וישתמש בה.
אני כנראה הרצתי את זה כבר כמה פעמים, אז הוא לא שואל אותי יותר את השאלה הזאת. אז אתם יכולים להשאיר את זה ל-HTTP, או להעביר את זה ל-HTTP, זה לא כזה משנה כרגע.
מה עוד אנחנו רוצים? אנחנו רוצים רק לארגן את הפרויקט הזה, פי חדש. כדי שניתן יהיה לפתח בו את ה-Countries REST API.
כרגע יש לי מה שנקרא Boilerplate, זה כל מיני קוד מוכן כזה שזרקו לי, שבכלל לא מעניין אותי מהקוד הזה, ומה שאנחנו רוצים זה טיפה לסדר את הדברים, בסרטון הבא נתחיל לפתח.
אז כשאני מסדר את הדברים, אני לא צריך את הקובץ הזה, Weather Forecast, בואו ניפטר ממנו, וכמובן שפה בפרוגרם יהיה לי כל מיני שגיאות, כי אין לי כרגע מחלקה Weather Forecast, בואו ניפטר גם מכל מיני דברים שאנחנו לא באמת צריכים.
את זה אנחנו כן צריכים, אנחנו כן רוצים לבנות את המערכת, אנחנו לא מתעסקים כרגע עם האותנטיקיישן, אז בואו ניפטר משני החברה האלה, ביי ביי ביי, מחקתי.
אין לנו צורך ב-Redirection, אין לנו צורך באותנטיקיישן, בהמשך כמובן נעבוד עם זה, אין לנו את כל מה שקשור ל-Weather, אז אני נפטר מהכל. כי זה מעין קוד כזה שהם נתנו לי שהוא לא באמת נדרש.
עוד דבר שהייתי מאפשר זה לסדר את ה-Namespace. ניימספייס צריך להיות שם של מוצר, שם של חברה.