Như chúng ta biết hiện nay việc phát triển các ứng dụng hay hệ thống đều cần sử dụng đến một thứ không thể thiếu là API.Nó là các phương thức, giao thức kết nối với các thư viện và ứng dụng khác. Nó là viết tắt của Application Programming Interface – giao diện lập trình ứng dụng. API cung cấp khả năng cung cấp khả năng truy xuất đến một tập các hàm hay dùng. Và từ đó có thể trao đổi dữ liệu giữa các ứng dụng.

Bạn đang xem: Swagger là gì

Vậy nên chúng ta luôn cần một Tài liệu hướng dẫn API. Nó là một nội dung kỹ thuật, nó chứa tất cả các thông tin được yêu cầu để có thể làm việc với API, với thông tin chi tiết về các tài nguyên, phương thức, các request và response, thông tin chứng thực, … được hỗ trợ bởi các hướng dẫn và ví dụ.Một công cụ rất phổ biến hiện nay để giúp làm một Tài liệu hướng dẫn API đó là Swagger.

Swagger là gì

Swagger là một bộ công cụ mã nguồn mở để xây dựng OpenAPI specifications giúp chúng ta có thể thiết kế, xây dựng tài liệu và sử dụng REST APIs.Swagger cung cấp 3 tools chính cho các developers :

Swagger-Editor : dùng để design lên các APIs hoàn toàn mới hoặc edit lại các APIs có sẵn thông qua 1 file config.Swagger-Codegen : dùng để generate ra code từ các file config có sẵnSwagger-UI : dùng để generate ra file html,css,… từ 1 file config.

Trong các tools trên, Swagger UI được sử dụng nhiều nhất, nó giúp sinh ra giao diện cho tài liệu từ file config dưới chuẩn OpenAPI. Giao diện được hiện ra rõ ràng và tường minh. Dễ dàng đọc hiểu cho cả lập trình viên lẫn người dùng. Sử dụng file config nhưng hoàn toàn tách biệt tác vụ với nhau. Trong bài này mình sẽ giới thiệu Swagger phiên bản 2.0 .

Cấu trúc cơ bản của file Swagger

Đầu tiên 1 file swagger có thể viết bằng JSON hoặc YAML.

Metadata: Mọi thông số kỹ thuật của Swagger đều bắt đầu với phiên bản Swagger . Phiên bản Swagger xác định cấu trúc tổng thể của đặc tả API - những gì bạn có thể ghi lại và cách bạn ghi lại nó. Ngoài ra các thông tin chi tiết như tiêu đề, mô tả hay version của bản api hiện tại cũng được khai báo tại đây.

Xem thêm: Cách Làm Phở Chiên Giòn Rụm, Thơm Ngon, Cực Lạ Miệng, Cách Làm Bánh Phở Chiên Giòn

Base Url: Nơi bạn sẽ định nghĩa host của server, đường dẫn cơ bản cũng như giao thức https hoặc http.Paths: xác định các điểm cuối riêng lẻ (đường dẫn) trong API của bạn và các phương thức HTTP (hoạt động) được hỗ trợ bởi các điểm cuối này. Và đây là phần quan trọng chứa thông tin API của bạn sẽ như thế nào bằng đường dẫn API, phương thức (GET, POST, PUT...), request (query, path, body..), response API

API Host and Base URL

REST APIs có một URL cơ sở mà các đường dẫn điểm cuối được nối vào. Đường url này được định nghĩa bởi schema, host, basePath

host: petstore.swagger.iobasePath: /v2schemes: - httpsTất cả API đều được dựa trên đường URL này ví dụ:

*

Schema là giao thức truyền được API sử dụng. Swagger hỗ trợ 2 giao thức là httphttps

paths: /pet: post:Khi đã khai báo đường dẫn đến API và phương thức của API, chúng ta cần tiếp tục khai báo đến request input của API gọi là Parameters

Parameters

Trong Swagger, các tham số hoạt động API được xác định trong phần tham số trong định nghĩa hoạt động. Mỗi tham số có tên, kiểu giá trị (đối với tham số giá trị nguyên thủy) hoặc lược đồ (đối với nội dung yêu cầu) và mô tả tùy chọn. Các dạng Parameters như là :

query parameters, ví dụ /users?role=admin.Tham số truy vấn là loại tham số phổ biến nhất. Chúng xuất hiện ở cuối URL yêu cầu sau dấu chấm hỏi (?), Với các cặp tên = giá trị khác nhau được phân tách bằng dấu và (&). Tham số truy vấn có thể được yêu cầu và tùy chọn.

parameters: - in: query name: offset type: integer description: The number of items to skip before starting to collect the result set. - in: query name: limit type: integer description: The numbers of items to return.path parameters, ví dụ /users/{id}. Tham số đường dẫn là các thành phần của đường dẫn URL có thể khác nhau. Chúng thường được sử dụng để trỏ đến một tài nguyên cụ thể trong một bộ sưu tập, chẳng hạn như người dùng được xác định bằng ID. Một URL có thể có một số tham số đường dẫn, mỗi tham số được biểu thị bằng dấu ngoặc nhọn {}.paths: /users/{id}: get: parameters: - in: path name: id # Note the name is the same as in the path required: true type: integer minimum: 1 description: The user ID. responses: 200: description: OKheader parameters, ví dụ X-MyHeader: Value. Một lệnh gọi API có thể yêu cầu gửi các tiêu đề tùy chỉnh cùng với một yêu cầu HTTP. Swagger cho phép bạn xác định tiêu đề yêu cầu tùy chỉnh như trong: tham số tiêu đề. Ví dụ: giả sử, một cuộc gọi tới GET / ping yêu cầu tiêu đề X-Request-ID:paths: /ping: get: summary: Checks if the server is alive. parameters: - in: header name: X-Request-ID type: string required: truebody parameters sử dụng trong the body of POST, PUT and PATCH requests.Các yêu cầu POST, PUT và PATCH có thể có phần thân yêu cầu (tải trọng), chẳng hạn như dữ liệu JSON hoặc XML. Theo thuật ngữ Swagger, nội dung yêu cầu được gọi là tham số nội dung. Chỉ có thể có một tham số nội dung, mặc dù hoạt động có thể có các tham số khác (đường dẫn, truy vấn, tiêu đề).paths: /users: post: summary: Creates a new user. consumes: - application/json parameters: - in: body name: user description: The user to create. schema: type: object required: - userName properties: userName: type: string firstName: type: string lastName: type: stringform parameters sử dụng cho những request truyền lên nhiều data ví dụ như việc upload file chả hạnpaths: /survey: post: summary: A sample survey. consumes: - application/x-www-form-urlencoded parameters: - in: formData name: name type: string description: A person"s name. - in: formData name: fav_number type: number description: A person"s favorite number.

Response API

Một API cần chỉ định các phản hồi cho tất cả các hoạt động API. Mỗi thao tác phải có ít nhất một phản hồi được xác định, thường là một phản hồi thành công. Phản hồi được xác định bằng mã trạng thái HTTP của nó và dữ liệu được trả về trong nội dung phản hồi và / hoặc tiêu đề

paths: /ping: get: produces: - application/json responses: 200: description: OKTrong câu trả lời, mỗi định nghĩa phản hồi bắt đầu bằng một mã trạng thái, chẳng hạn như 200 hoặc 404. Một hoạt động thường trả về một mã trạng thái thành công và một hoặc nhiều trạng thái lỗi. Mỗi trạng thái phản hồi yêu cầu một mô tả.

responses: 200: description: OK 400: description: Bad request. User ID must be an integer and bigger than 0. 401: description: Authorization information is missing or invalid. 404: description: A user with the specified ID was not found.Ngoài những trạng thái status ra, chúng ta có thể khai báo những dạng dữ liệu mà API sẽ trả về

responses: 200: description: A User object schema: type: object properties: id: type: integer description: The user ID. username: type: string description: The user name.Một thứ rất hay của Swagger hỗ trợ là $ref. Nó giúp chúng ta có thể sử dụng lại những data mà ta đã định nghĩa. Nó giúp tránh việc trùng lặp hay khai báo nhiều lần.

responses: 200: description: A Pet object schema: $ref: "#/definitions/Pet" "405": description: "Invalid input"definitions: Pet: type: "object" properties: id: type: "integer" name: type: "string" example: "doggie" status: type: "string" description: "pet status in the store"Như trên chúng ta đã tìm hiểu cơ bản để viết được một file swagger định nghĩa API. Sau đây là một ví dụ mình đã viết ra:

*

Hy vọng bài viết của mình sẽ giúp các bạn hiểu và sử dụng Swagger một cách tốt.Bài viết được tham khảo từ : https://swagger.io/docs