סוואגר (תוכנה)

סוואגר (באנגלית: Swagger) היא חבילת כלים למפתחי API, של חברת SmartBear Software<ref></ref> ולשעבר גם מפרט שממנו התפתח מפרט OpenAPI.<ref></ref>

== היסטוריה ==
פרויקט Swagger API נוצר בשנת 2011 על ידי טוני טאם, מייסד שותף טכני של אתר המילונים וורדניק. במהלך הפיתוח של המוצרים של וורדניק, הצורך באוטומציה של תיעוד API ויצירת SDK לקוח הפך למקור תסכול משמעותי. טאם עיצב ייצוג JSON פשוט של ה-API, תוך בנייה על הגמישות של פרוטוקול HTTP ושימוש בתכונות רבות של כלים שנבנו עבור פרוטוקול SOAP. הקונספט לממשק המשתמש הוצע על ידי Ayush Gupta, שהציע שממשק משתמש אינטראקטיבי יועיל למשתמשי קצה שרוצים "לנסות" ולפתח מול ה-API. Ramesh Pidikiti הוביל את המימוש של מחולל הקוד הראשוני והמעצב/המפתח Zeke Sikelianos טבע את השם Swagger. פרויקט Swagger API הפך לקוד פתוח בספטמבר 2011. זמן קצר לאחר פרסום הפרויקט, נוספו מספר רכיבים חדשים לפרויקט, כולל אימות עצמאי, תמיכה ב-Node.js ו-Ruby on Rails.

בשנותיו הראשונות של סוואגר, השימוש במוצר היה בהיקף צנוע, בעיקר אצל חברות קטנות ומפתחים עצמאיים. לממשקי HTTP בדרך כלל לא היה מנגנון תיאור שקריא למחשבים, וסוואגר סיפקה דרך פשוטה לעשות זאת. טוני הוזמן לפגישה עם כמה ממובילי המחשבה של תעשיית ה-API, כולל ג'ון מוסר (ProgrammableWeb), מארש גרדינר (Apigee, כיום מוצר של גוגל), מרקו פאלאדינו (קונג) וקין ליין (API Evangelist) כדי לדון במאמץ סטנדרטיזציה סביב תיאורי API. אמנם הפגישה לא הניבה תוכנית קונקרטית לעשות זאת, אך היא העלתה את סוואגר על המפה כחידוש קריטי בתחום ה-API.

בזכות השימוש ברישיון הקוד הפתוח Apache 2.0, החלו מספר מוצרים ושירותים מקוונים לכלול את Swagger בהיצע השירותים שלהם, ותהליך זה הואץ במהירות לאחר אימוץ הטכנולוגיה על ידי Apigee, Intuit, Microsoft, IBM ואחרות שהחלו לאמץ בפומבי את פרויקט Swagger.

זמן קצר לאחר יצירת Swagger, הוצגו מבנים חלופיים לתיאור ממשקי API של HTTP, כשהפופולריים ביותר הם API Blueprint באפריל 2013 ו-RESTful API Modeling Language (RAML) בספטמבר 2013.

בנובמבר 2015, SmartBear Software, החברה שתחזק את Swagger, הודיעה שהיא מסייעת ביצירת ארגון חדש, בחסות קרן לינוקס, בשם OpenAPI Initiative. מגוון חברות, כולל גוגל, יבמ ומיקרוסופט הן חברות מייסדות בארגון החדש.<ref></ref>

ב-1 בינואר 2016, מפרט Swagger שונה ל- OpenAPI Specification, והועבר למאגר תוכנה חדש ב-GitHub.<ref></ref> למרות שהמפרט עצמו לא השתנה, שינוי שם זה סימן את הפיצול בין פורמט תיאור ה-API לבין כלי הקוד הפתוח.

== שימושיות ==
ניתן לחלק את השימוש בכלים בקוד פתוח של Swagger למקרי שימוש שונים: פיתוח, אינטראקציה עם ממשקי API ותיעוד.

=== פיתוח API ===
בעת יצירת API, ניתן להשתמש בכלי Swagger כדי ליצור באופן אוטומטי מסמך Open API המבוסס על הקוד עצמו. זה מטמיע את תיאור ה-API בקוד המקור של הפרויקט ונקרא באופן לא פורמלי פיתוח API בשיטת קוד-תחילה או מלמטה למעלה.

לחלופין, באמצעות [https://github.com/swagger-api/swagger-codegen Swagger Codegen], מפתחים יכולים לנתק את קוד המקור ממסמך ה-API הפתוח, וליצור קוד לקוח ושרת ישירות מהעיצוב. זה מאפשר לדחות את שלב הקידוד.

=== אינטראקציה עם API ===
באמצעות פרויקט Swagger Codegen, משתמשי קצה יוצרים SDK עבור הקליינט ישירות ממסמך OpenAPI, מה שמפחית את הצורך בקוד קליינט שנוצר על ידי אדם. נכון לאוגוסט 2017, פרויקט Swagger Codegen תמך ביותר מ-50 שפות ופורמטים שונים ליצירת SDK של קליינט.

לשם המחשה, API שנועד לשרת אתר אינטרנט, ניתן לשימוש באמצעות הרצת הקריאות השונות מתוך דף HTML שמיוצר אוטומטית על ידי Swagger Codegen, בלי שאתר האינטרנט נבנה או הוסיף תמיכה בקריאות API חדשות.

=== תיעוד ממשקי API ===
כאשר מתואר על ידי מסמך OpenAPI, ניתן להשתמש בכלי קוד פתוח של Swagger לאינטראקציה ישירה עם ה-API דרך [https://github.com/swagger-api/swagger-ui ממשק המשתמש של Swagger] . פרויקט זה מאפשר חיבורים ישירות לממשקי API חיים באמצעות ממשק משתמש אינטראקטיבי מבוסס HTML. ניתן להגיש בקשות ישירות מהממשק והאפשרויות שנבדקות על ידי המשתמש בממשק.<ref></ref>

== קישורים חיצוניים ==

* 
* [https://openapis.org/ אתר Open API Initiative (OAI)]
* [https://github.com/OAI/OpenAPI-Specification מפרט OpenAPI], באתר GitHub
* [https://marketplace.eclipse.org/content/openapi-studio-rich-oas3-editor Eclipse OpenAPI (OAS) עורך וסטודיו]

==הערות שוליים==

קטגוריה:שפות סימון