יום רביעי, 28 באוקטובר 2015

REST, GET ו-Post

REST, Representational State Transfer
  
REST הינו סגנון ארכיטקטוני, או סט של אילוצים ארכיטקטוניים.
HTTP בנוי בסגנון של REST.
HTTP הינו פרוטוקול של שליחה ותגובה (Request / Response) ומיועד לאפשר תקשורת בין ה-Client ל-Server
ל-HTTP יש מתודות לשליחה / תגובה בין השרת לקליינט, למשל Get ו-Post.
ה-Get הוא בטוח - אין תופעות לוואי, ניתן לשליחות חוזרות ואפשרי לקאשינג.
התגובה ב-HTTP כוללת אספקטים ייצוגיים שזה התוכן של ה-URL, מה שנמצא ב-Body, כמו למשל מסמך HTML.
מסמך HTML יכול לכלול לינקים למסמכים אחרים, ל-CSS ול-Java Script.
הינה כמה מאפיינים של REST:

Resources:
   URI
      Uniform Interface
      Methods
      Representation
  
Protocol
   Client / Server
   Stateless: each req is independent from each other.
   Cacheable
   Layered
וכמה יתרונות:  
   Network performance
   Efficiency - Caching
   Scalability - Possibile to use large set of origin servers
   User Perceived Performance - set of defined methods, lets the code run in the client or server - whatever is faster
ככה נראה REST בחיים האמיתיים

ההבדלים בין המתודות הם:
ב-Get הפרמטרים נמצאים ב-URL
ב-Post הפרמטרים נמצאים ב-Body 
הרבה פעמים אנו משתמשים ב-Get להביא מסמכים והפרמטרים מתארים את המסמכים - למשל באיזה דף אנחנו נמצאים.
ב-Post בד"כ משתמשים בכדי לעדכן את הנתונים או את השרת.
ל-Get יש הגבלה על אורך, ל-Post כמעט ואין.
ל-Get אפשר לעשות קאשינג בדרך השרת לקליינט, ב-Post לא.
את ה-Get אפשר לשלוח מספר פעמים, את ה-Post לא.
  
RESTful API הוא API לפניות לשרת. אפשר להשתמש במגוון מתודות וב-XML, אבל בעיקר משתמשים בו ב-JSON. SOAP (Simple Object Access Protocol) למשל משתמש רק ב-Post וב-XML.

יום ראשון, 18 באוקטובר 2015

ממה בנוי דף ווב? - צד הקליינט

HTML
על טים ברנרס-לי שמעתם? לא? אולי הוא בכלל לא מספיק חשוב בכדי לשמוע עליו?
תחליטו אתם. הוא בסה"כ, בין יתר הדברים שעשה, המציא את ה-HTML. הא, כן, הוא גם הגה את ה-World Wide Web אבל זה סיפור אחר.
ה-HTML זה ראשי-תיבות של HyperText Markup Language, והינה ההפתעה השנייה: יש שם בעברית: "שְׂפַת סִימָנֵי עֲרִיכָה לְתַמְלִיל-עָל". אני מצפה שמהיום תשתמשו בו!
ב- markup language הכוונה, בהקשר שלנו, לשפת תגיות, הנלוות לטקסט ומטרתן היא בעיקר להוראות של הצגת הטקסט, קביעת היררכיה, מידור של חלקים ועוד. הדבר קיים כבר מזמן, למשל הוראות הבמאי על תסריט וכד'.
אגב, זו שפת תגיות ולא, זו לא שפת תכנות. חשוב לי לציין את זה כי ראיתי בקו"ח משפטים כמו:
"שפות תכנות: HTML, XML ." נא בדקו בקו"ח שלכם ואם קיימים, מחקו מיד, זה יחסוך לכם עוגמת נפש.
  
תג HTML אופייני נראה כך:
<title>HTML – ויקיפדיה</title>
התג <title> (או כל תג אחר) אינו נראה בדף, והוא מורה על כך שהטקסט המקושר אליו הינו הכותרת: HTML – ויקיפדיה.
התג <title/> בעצם אומר בזכות הסלש שזוהי סופה של הכותרת.
  
ב"הייפר טקסטס" הכוונה לקישור לנקודה אחרת, וידוע בימינו בכינוי החיבה "לינק".
  
בכדי לראות עוד דוגמאות פשוט תבחרו view source כשאתם רואים עמוד מסוים בדפדפן.
  
ה-HTML מאפשר הכנסת תמונות ואובייקטים אחרים כמו Java Script לדף אינטרנט שאותו הדפדפן שלכם "מתרגם" למה שאתם רואים.
בדיחה פרטית
מה לשים לב בבדיקות?*
ישנם אתרים שבודקים תקינות של דפי HTML, למשל זה. למרות שבבסיסה השפה הזו היא סלחנית, כדאי לבדוק האם מדובר באזהרות פחות חשובות או בדברים שיש לתקנם.
  
ועכשיו כמה נקודות הקשורות ל-HTML ואובייקטים שהוא יכול להכיל. בחרתי במושגים שאני שומע ביום-יום. ברור שיש עולם שלם מאחורי ה-HTML והאובייקטים הללו. מה שחשוב לנו, בתור בודקים, זה להכיר אותם ברמה לפחות בסיסית ולדעת לאתר אותם בדף. חשוב להבין אילו בדיקות מותאמות לאילו אלמנטים. למשל אם יודעים שבעמוד מסוים יש iframe  (הסבר למטה) צריך לקחת בחשבון שיכול להיות שלא תהיה גישה לאתר השני מכל מיני סיבות, וששינוי באתר השני עלול לפגוע ב-UI  של האתר שלי.
  
JavaScript 
ציטוט ישיר של וויקיפדיה:
"Java Script היא שפת תסריט מפורשת מבוססת אובייקטים המותאמת לשילוב באתרי אינטרנט ורצה על ידי דפדפן האינטרנט בצד הלקוח. השפה מרחיבה את יכולות שפת התגיות הבסיסית HTML ומאפשרת בכך ליצור יישומי אינטרנט מתוחכמים יותר. למעשה, רוב אתרי האינטרנט המודרניים משלבים שפה זו. היא ידועה בעיקר כשפה המוטבעת בדפי HTML על מנת להציג דפים דינמיים, שמשולבת בהם תוכנה. קוד ה-JavaScript שמשולב בדף HTML מבוצע על ידי הדפדפן. JavaScript נוחה מאוד לעבודה עם DOM ולתפעול DHTML."
  
מה לשים לב בבדיקות?
בדיקות UI ופונקציונליות רגילות, ע"פ הגדרות המוצר.
  
Cascading Style Sheets או CSS
CSS נועד להפריד אלמנטים עיצוביים מהעמוד עצמו, וכך להפוך את מקור העמוד לקריא יותר. בנוסף מספר דפי HTML יכולים לרשת מאותו וה- CSS חוסך עבודה והופך את האתר לעקבי יותר.
ב- Cascading הכוונה לכך שיש היררכיה, למשל תגית עיצוב בתוך עמוד עצמו גוברת על אותה תגיד ב-CSS.
  
מה לשים לב בבדיקות?
אכן האתר עקבי באובייקטים שלו (למשל סוגי וגדלי פונטים). כשמוצאים בעייה כדאי להבין האם מדובר רק בדף אחד או אם מדובר ב-CSS, שזה האחרון ישפיע על כל האתר. לכן תיקון CSS יש לבדוק בכמה דפים, לא רק שהעניין תוקן אלא שדבר לא נפגע כתוצאה.
  
DIV
קונטיינר שמאגד תחתיו אלמנטים של הדף ויוצר חלקים. כך ניתן למשל לאחד פונט לכל הטקסט תחת ה-DIV.
  
Asynchronous JavaScript And XML או AJAX
  
AJAX היא טכניקת פיתוח של צד ה-client שמטרתה לייצר אפליקציות ווב בלתי מסוכרנות. ב"בלתי מסוכרנות" הכוונה שהטעינה של חלקים אלה נעשית ברקע ואינה מעכבת את טעינת העמוד. בנוסף, תוכן ה-AJAX יכול להתעדכן מול השרת מבלי הצורך בטעינת הדף מחדש. כל זה מושג ב-Java Script שנמצא בדף הקליינט.
  
מה לשים לב בבדיקות?
שאכן התוכן של האובייקט יכול להשתנות ללא טעינת הדף, ו"יחסיו" עם הדף ואובייקטים אחרים.
  
Inline frame  או Iframe
זהו תאג שבעזרתו אפשר להכניס מסמך אחר לתוך המסמך שעובדים עליו כרגע. בעצם אפשר להכניס ל-iframe אתר אחר.
  
מה לשים לב בבדיקות?
מעבר למה שנאמר למעלה, ענייני security, שהאתר שהכנסנו לא "יגנוב" מידע של משתמשים (למרות שיש לו cookies משלו).
  
  
Document Object Model או DOM
ה-DOM הוא סטנדרט לגישה למסמכים (ב"מסמך" הכוונה כאן לעמוד HTML).
בעזרת ה-HTML DOM ה-Java Script יכול להגיע ולשנות את כל האלמנטים בעמוד. כשעמודHTML  נטען הדפדפן יוצר את המודל הזה של האובייקטים של המסמך, כלומר הדף. למשל:
DOM HTML tree
בעזרת מודל זה ה-Java Script מקבל יכולת לצור HTML דינמי:
לשנות אלמנטים, לשנות מאפיינים של אלמנטים , לשנות את הסטייל של העמוד, להוסיף אלמנטים ותכונות ל-HTML וליצור HTML Events חדשים.
  
מה לשים לב בבדיקות?
בדיקות UI ופונקציונליות רגילות, ע"פ הגדרות המוצר.
  
* הכוונה היא ספציפית לנושא זה והבאים אחריו, לא לבדיקות כלליות של דף אינטרנט למשל UI  וביצועים.
  
מקורות:
וויקפדיה
tizag tutorials

רשומות פופולריות