API-ის დოკუმენტაცია, Swagger-ის ინტეგრაცია Node.JS-ში
რეალურ სამყაროში უმეტესწილად პროექტის Front-End და Back-End არის განცალკაევებული და Front-სა და Back-ს შორის კომუნიკაცია Rest API-ების მეშვეობით ხდება.
ოდნავ მოზრდილ პროექტში Back-ის API სერვისების რაოდენობამ შეიძლება 50-საც კი გადააჭარბოს. შესაბამისად Front-End დეველოპერსა და Back-End დეველოპერს შორის თითოეულ ამ სერვისზე კომუნიკაცია უბრალო მიმოწერით, საუბრით და ა.შ. საკმაოდ არაეფექტურია და პროექტის მსვლელობისას ბევრ ცდომილებას, ხარვეზს და უსიამოვნო შემთხვევებს იწვევს.
ზუსტად ამ პრობლემას აგვარებს ხელსაწყო Swagger.
სვაგერი მოკლედ, რომ ვთქვათ არის ჩვენი API-ების Readme ფაილი. ოღონდ სვაგერის Readme-ის მარქდაუნის ნაცვლად YAML-ით ვწერთ.
აღვწერთ თითოეულ ჩვენს API-ის შემდეგი თვისობრიობის მიხედვით:
რა url-ზე უნდა მივაკითხოთ? ( /users )
რა მეთოდის API-ია? (GET, POST, PUT,... DELETE)
რა მარშრუტის პარამეტრები აქვს? (Query Params)
რა Body-ის პარამეტრები აქვს
როგორ პასუხუს უნდა ველოდოთ? რა სტატუს კოდით?
ამ და სხვა ინფორმაციას რაც საჭიროა, რომ Front-End და Back-End დეველოპერს შორის გაზიარდეს აღვწერთ ჩვენს სვაგერის დოკუმენტაციაში YAML ფაილის მეშვეობით.
მეტი ინფორმაციისთვის თუ როგორ უნდა აღვწეროთ API - იხილეთ სვაგერის დოკუმენტაცია
ამასთანავე, სვაგერის ინტერფეისი საშუალებას გვაძლევს თითოეულ ამ სერვისზე რექვესთი გავგზავნოთ და მივიღოთ პასუხი, რაც არანორმალურად მნიშვნელოვანია სერვისების გასატესტად და გასაცნობად.
როგორ ჩავაინტეგრიროთ სვაგერი Node.JS-ში Express-თან ერთად?
არსებობს swagger-ui-express ბიბლიოთეკა, რომელსაც შეუძლია yamljs ბიბლიოთეკასთან ერთად yaml-ის ფაილი შესაბამის სვაგერის ინტერფეისად დაარენდეროს.
დავაინსტალიროთ ჩვენს ლარაველის პროექტში swagger-ui-express და yamljs ბიბლიოთეკები შემდეგი ბრძანებით:
შემდგომ config საქაღალდეში შევქმნათ swagger.yaml ფაილი:
შემდგომ swagger.yaml-ში ჩავსვათ პატარა სვაგერის სნიპეტი, რომლის საშუალებითაც დავაგენერირებთ სვაგერის ინტერფეისს:
ახლა კი შევქმნათ server.js ფაილი პროექტის ძირეულ საქაღალდეში:
იმისათვის, რომ პროექტი გავუშვათ, საჭიროა დავაინსტალიროთ შემდეგი ბიბლიოთეკები:
express
@faker-js/faker
swagger-ui-express
yamljs
გავუშვათ express-ის სერვერი ბრძანებით:
და ვესტუმროთ url-ს http://localhost:4444/api-docs სადაც რეალურად დავინახავთ სვაგერის ინტერფეისს:
რეალურად სვაგერის ინტერფეისის გენერაციისათვის საქმეს აკეთებს შემდეგი კოდი:
განვიხილოთ რა ხდება:
პირველ რიგში გვაქვს დაიმპორტებული express, express-ის როუტერი, YAML ფაილის პარსერი და Swager-ის ინტერფეისის გენერატორი
მე-9 ხაზზე swaggerDocument-ში ვინახავთ გაპარსულ swagger.yaml ფაილს
14-ე ხაზზე ექსპრესის სერვერს ვქმნით
ხოლო 19 ხაზზე კი კონკრეტულ მარშრუტს('/api-docs') ვანიჭებთ სვაგერის middleware-ებს
იმ შემთხვევაში, თუ VSCode-ს ვიყენებთ რეკომენდირებულია OpenAPI-ის ექსთენშენის დაყენება, რომელიც Swagger-ის დოკუმენტაციის წერისას autocomplete-ს გაააქტიურებს
Last updated