תקשורת עם ממשק ה-API של הכלי לחסימות חסימות

שירות מהדר סגירה יוצא משימוש ויוסר. במקום זאת, מומלץ להפעיל את המהדר באופן מקומי.

סקירה כללית

ממשק ה-API של Clasure Compiler נותן גישה פרוגרמטית ל-Closure Compiler JavaScript, היצע דרך API מבוסס-אינטרנט. ממשק המשתמש של הכלי להסדר חסימות מספק דרך קלה להשתמש בשירות המהדר דרך טופס פשוט בדף אינטרנט, אבל העתקה של הפלט מדף האינטרנט הזה היא לא הדרך היעילה ביותר לעבוד. בעזרת ה-API של Cloud Compiler Service תוכלו ליצור כלים משלכם וליצור תהליך עבודה משלכם.

במדריך הזה נסביר איך לשלוח JavaScript לשירות 'הסגר מסוג סגירה'. לדוגמה, נעשה שימוש ברמה הבסיסית ביותר של מהדר סגירה, שפשוט מסיר תגובות ורווחים מ-JavaScript.

המדריך הזה יוצא מנקודת הנחה שיש לכם היכרות בסיסית עם JavaScript ו-HTTP. הוא משתמש בסקריפט של Python לשליחת JavaScript לשירות Closure Compiler, אבל לא צריך לדעת איך להשתמש ב-Python.

איך לתקשר עם ה-API

  1. קביעת הפרמטרים של הבקשה

    אתם יוצרים אינטראקציה עם שירות 'סגירת קלט' על ידי שליחת בקשות HTTP POST לשרת של מהדקי סגירה. בכל בקשה, עליכם לשלוח לפחות את הפרמטרים הבאים:

    js_code או code_url

    הערך של הפרמטר הזה מציין את ה-JavaScript שברצונכם להדר. עליכם לכלול לפחות אחד מהפרמטרים האלה, ואפשר לכלול את שניהם. הפרמטר js_code חייב להיות מחרוזת שמכילה JavaScript, כמו alert('hello'). הפרמטר code_url חייב להכיל את כתובת ה-URL של קובץ JavaScript .js שזמין ב-HTTP.

    אפשר גם לכלול פרמטרים מסוג מקור בעל שם בטופס js_code:path/to/filename.js. כל קובץ ייווצר במערכת קבצים וירטואלית ויאפשר להשתמש במודולים סטנדרטיים באמצעות ההצהרה import וההצהרה export שנתמכות ב-ECMASCRIPT6.

    compilation_level

    הערך של הפרמטר הזה מציין את מידת הדחיסה והאופטימיזציה שאפשר ליישם ב-JavaScript. יש שלוש רמות של אוספים: WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS ו-ADVANCED_OPTIMIZATIONS. בדוגמה הזו נעשה שימוש באוסף WHITESPACE_ONLY, שפשוט מסיר תגובות ורווחים.

    ברירת המחדל לפרמטר compilation_level היא הערך SIMPLE_OPTIMIZATIONS.

    output_info

    הערך של הפרמטר הזה מציין את סוג המידע שאתם רוצים להדר. יש ארבעה סוגים אפשריים של פלט: compiled_code, warnings, errors ו-statistics. בדוגמה הזו נעשה שימוש בערך compiled_code, שמציין לשירות מהדר סגירה כדי ליצור את הגרסה הדחוסה של ה-JavaScript שהוא מקבל בבקשה.

    output_format

    הפורמט של הפלט של שירות 'סגירת הכלי לסגירה'. קיימים שלושה פורמטים אפשריים של פלט: text, json או xml. בדוגמה הזו נעשה שימוש בערך text, שמפיק טקסט גולמי.

    ערך הפרמטר output_format מקבל ערך text כברירת מחדל.

    למידע נוסף על הפרמטרים הנדרשים האלה ועל פרמטרים אופציונליים נוספים, עיינו בהפניית API.

    הדוגמה במדריך המבוא הזה שולחת רק שורה אחת של JavaScript גולמי לשירות Cloud Compiler, ולכן היא משתמשת ב-js_code במקום ב-code_url. הוא משתמש ב-compilation_level מתוך WHITESPACE_ONLY, מבקש פלט טקסט גולמי עם output_format של text ומבקש סוג של output_info מסוג compiled_code.

  2. לשלוח בקשה לפרסום פוסט בשירות חסימות

    כדי לקבל פלט משירות Cloud יופיע, שולחים את הפרמטרים שבחרתם בשלב 1 בבקשת POST לכתובת ה-API של Cloud יופיע. אחת הדרכים לעשות זאת היא באמצעות טופס HTML פשוט כמו זה שמופיע ב-Hello World of the Clasure Compiler Service API.

    עם זאת, כדי להשתמש בטופס כמו בשלב הפיתוח, צריך להעתיק את הפלט מהדפדפן ולהדביק אותו בקובץ .js אם במקום לכתוב תוכנית קטנה לשליחת הבקשה לשירות 'סגירת אוסף', תוכלו לכתוב את הפלט של מהדר סגירה ישירות לקובץ. לדוגמה, סקריפט ה-python הבא שולח את הבקשה לשירות מהדר סגירה וכותב את התגובה:

    #!/usr/bin/python2.4
    
    import httplib, urllib, sys
    
    # Define the parameters for the POST request and encode them in
    # a URL-safe format.
    
    params = urllib.urlencode([
        ('js_code', sys.argv[1]),
        ('compilation_level', 'WHITESPACE_ONLY'),
        ('output_format', 'text'),
        ('output_info', 'compiled_code'),
      ])
    
    # Always use the following value for the Content-type header.
    headers = { "Content-type": "application/x-www-form-urlencoded" }
    conn = httplib.HTTPSConnection('closure-compiler.appspot.com')
    conn.request('POST', '/compile', params, headers)
    response = conn.getresponse()
    data = response.read()
    print data
    conn.close()
    

    הערה: כדי לשחזר את הדוגמה הזו, יכול להיות שמשתמשי Windows צריכים להתקין את Python. לקבלת הוראות להתקנה ושימוש ב-Python בקטע 'Windows', אפשר להיעזר בשאלות הנפוצות בנושא Python ל-Windows.

    הסקריפט הזה מבצע אופטימיזציה של JavaScript שמועבר אליו כארגומנט של שורת פקודה. מדביקים את הקוד שלמעלה בקובץ בשם compile.py, משנים את ההרשאות של הקובץ כדי שיהיה אפשר להריץ אותו ומריצים את הפקודה הבאה:

    $ python compile.py 'alert("hello");// This comment should be stripped'
    

    פקודה זו מדפיסה את הקוד הדחוס מהתגובה של מהדק הסגירה:

    alert("hello");
    

    הדוגמה הזו משתמשת באוסף הידור, ולכן המהדר לא צריך לעשות דבר מלבד להסיר את התגובה.

    כמה דברים שחשוב לדעת על הסקריפט הזה:

    • הפרמטרים מועברים לשיטת הבקשה של ה-HTTPSConnection כמחרוזת מקודדת של כתובת URL. אחרי הקריאה ל-urllib.urlencode, המשתנה של הפרמטרים מכיל את המחרוזת הבאה:
      js_code=alert%28%22hello%22%29%3B%2F%2F+This+comment+should+be+stripped&output_info=compiled_code&out=text&compilation_level=WHITESPACE_ONLY
          
      אם כותבים סקריפט משלך, הסקריפט צריך לפרסם תוכן שמקודד בכתובת ה-URL הזו.
    • הבקשה חייבת לכלול תמיד את הכותרת Content-type של application/x-www-form-urlencoded
  3. השלבים הבאים

    כדי ללמוד איך להשתמש בשירות כדי להשיג דחיסה טובה יותר בתרחיש פיתוח מציאותי יותר, המשך אל דחיסת קבצים באמצעות ה-API.