
API Controller Empty ולא MVC, שמשתייך לטכנולוגיה אחרת (ASP.NET). קוראים לו BooksController.Test שמחזירה string עם הטקסט "testing our REST API".HttpGet, ויש גם post, put, patch ו-delete. הפונקציה תופעל רק כשהמשתמש שולח בקשה עם המתודה הזאת לנתיב שהוגדר.api/testing ורואים את הטקסט.WeatherForecast ב-api/testing בכל המקומות, כדי שהדפדפן ייפתח ישר שם.[Route("api/[controller]")] מוסיף תחילית לכל הפונקציות, כש-[controller] הוא שם הקונטרולר בלי הסיומת, כלומר books. אם משאירים גם route על הפונקציה, הנתיב הופך לכפול, למשל api/books/api/testing.[HttpGet] ו-[Route("api/testing")] על הפונקציההטקסט המלא של הדקות הראשונות בהרצאה «יצירת Controller דוט-נט Core» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
אחרי שבנינו את מחלקת המודל, אנחנו רוצים רק לראות שהתוכנית מצליחה לרוץ ולהחזיר לנו מידע כלשהו לא קשור לדטאבייס. לצורך כך, אנחנו צריכים לבנות את הקונטרולר.
אז מה זה הקונטרולר? בסך הכל, זאת מחלקה שמכילה פונקציות שכאשר היוזר רושם את הנתיב, הוא רוצה לגלוש אליו, הוא בעצם גולש לפונקציה בתוך הקונטרולר.
אז בואו ניגש ונוסיף, אפשר להוסיף קונטרולר, אפשר להוסיף New Item, בואו ננסה להוסיף קונטרולר, אני רואה שהוא מציג לי את החלונית הזאת, אני לא רוצה קונטרולר של MVC, אז אנחנו לא רוצים את ה-MVC ששייך בעצם לטכנולוגיה אחרת שנקראת ASP.NET, אנחנו רוצים API, בואו ניגש ל-API, נגיד לו API
Controller Empty, נבנה את הכל בעצמנו, נבצע Add, הנה אני רואה שהוא מסמן לי פה את ה-API Controller Empty, נקרא לו Books Controller, add, הנה הקונטרולר, אני פטר מה-extra namespace, נקודה psick, מעולה, ואנחנו רוצים לבנות איזושהי פונקציה שמחזירה string, test נקרא לה, return, testing our REST API, מה שאנחנו
רוצים להגדיר זה איך בדיוק המשתמש אמור לגלוש לפונקציה, או איך הוא מגיע אליה. זה בעצם קונספט שנקרא route, הנה אנחנו רואים פה פקודת route.
ראוט אומר מה בעצם הנתיב המלא שאתה רוצה לרשום, הנתיב ליתר דיוק הפנימי באתר שאתה רוצה לרשום, בשביל להגיע לפונקציה הזאת, ואיזה מטוד גורם להגיע לפונקציה הזאת.
הדבר שגורם למערכת להגיע לפונקציה זה בעצם תשלובת בין מטוד, שדיברנו על זה בעבר, לבין ראוט, לבין הנתיב. זה מתבצע כאן בעזרת c-sharp attribute, והוא נקרא http, ויש לנו...
ויש לנו אפשרות להגיד שאנחנו רוצים htp get, זאת אומרת רק אם היוזר מבצע get request הוא יגיע לפונקציה, או להגיד לו אני רוצה htp post, או put, או patch, או delete, וכך בעצם אנחנו מגדירים את המתוד, שרק אם היוזר מבצע גלישת request, htp
request עם המתוד שהגדרנו, אז הוא יגיע לפונקציה. הפונקציה מקבלת את הראוט, איזה ראוט אנחנו רוצים? להגדיר, אז אנחנו רוצים, אם היוזר יגלוש ל-Route API, סלאש, ובוא נניח, טסטינג, אז הוא יגיע לפונקציה הזאת, אני כרגע אוריד, או ישים בהערה יותר נכון, את הפקודה הזאת, שתכף
נבין מה היא, זה בעצם יהיה ה-Route, שנצטרך לכתוב, בשורת ה-URL, בשביל להגיע לפונקציה, ונקבל את זה בחזרה. בואו נראה, כל מה שאני עושה, אני מוודא שאני נמצא פה על HTTP, ו-Ctrl-F5, אני מריץ את המערכת, הנה נפתח לי אתר אינטרנט, ואני רואה שהוא אומר לי, תקשיב, אני
בעצם הולך לגלוש, אנו גולש, ל-Weather Forecast, שמחקנו בכלל, אבל הוא זוכר אותו, תכף אני פטר ממנו, וכל מה שאני רוצה לעשות זה למחוק את זה, ולהגיד לו, תקשיב, לך בבקשה ל-API-Testing, זה מה שכתבנו פה, Enter, ואז הוא מצליח לגלוש לו פונקציה, ואומר לי, Testing our REST API.
יופי, הכל עובד, איזה כיף. בואו נגדיר רק את התיומת הזאת, בפרופרטיז, Launch Settings, במקום ה-Weather Forecast שאנחנו רואים כאן, בואו נדביק כאן וכאן.
כל מקום שהוא גולש באיזושהי שיטה, אולי הוא גולש ב-HTPS, אולי ב-HTTP, אולי הוא משתמש באיזשהו סרבר פנימי, אז שאוטומטית יגלוש ל-API Testing, נסגור את האתר, נחזור, Ctrl F5, נריץ עוד פעם ונראה אוטומטית שהוא כבר גולש לכאן, יופי.
והנה אנחנו רואים שהצלחנו להגדיר פונקציה, שמוגדרת על ידי method-specific ו-route-specific. שימו לב שאנחנו לא שמים slash-מקדים פה. מה זאת הפקודה הזאת?
זאת פקודה שאומרת, רגע, אם אתם רוצים איזשהו