Một số tip & tricks khi sử dụng apipie để viết document cho rails
Bài đăng này đã không được cập nhật trong 7 năm
Apipie là một gem raasrt hay nó hỗ trợ viết document cho RESTful API.
Một số ưu điểm của gem này là :
- Viết document như code bằng Ruby =))
- Quản lý document và Reusing dễ dàng.
- Có thể gộp chung cùng source code để quản lý bằng git.
Cách sử dụng bạn có thể tham khảo: https://github.com/Apipie/apipie-rails Ở đây mình chỉ giới thiệu 1 số tip & tricks khi dùng apipie.
Cấu trúc folders Trong hướng dẫn trên github, document được viết luôn trong controller. Nhưng như thế controller phình to ra, khó quản lý, rối mắt. Khi review thì document và code không tách bạch nhau ra Cách giải quyết là đặt toàn bộ document trong thư mục app/docs và mình sẽ include vào:
# app/controllers/lists_controller.rb
class ListsController < ActionController::Base
include ListsDoc
...
end
ListsDoc trong app/docs/lists_doc.rb
# app/docs/lists_doc.rb
module ListsDoc
extend Apipie::DSL::Concern
api :GET, '/lists/:id', '(Done) Get lists'
param :id, :number, required: true
param :page, :number
param :limit, :number
error :code => 401, :desc => "Unauthorized"
error :code => 404, :desc => "Not Found"
def show
end
…
end
Như vậy sẽ làm code trong controller đẹp hơn.
Show db schema Trong rails có file db/schema.rb để define các table. File này được cập nhật mỗi khi chạy migration, vì thế nó luôn đảm bảo là DB mới nhất.
Giờ ta sẽ đọc file này và show lên document :
module DbDoc
extend Apipie::DSL::Concern
api :GET, '/db/', 'DB schema.'
description "DB schema."
example <<-EXAMPLE
#{File.read('db/schema.rb') if File.exist?('db/schema.rb')}
EXAMPLE
def db_schema
end
end
Tạo resource là common Thường thường thì sẽ tạo thêm 1 resource là common để cho các document khác vào đây. Ví dụ như :
- Authentication
- DB schema …
Phải sửa document và cho vào PR 1 quy ước nhỏ để đảm bảo document luôn được làm cẩn thận và cập nhật. Thêm 1 label need document, sau khi review và code đã sẵn sàng merge sẽ dùng label này để update document mới nhất lên.
Trên đây là 1 số tip&trick trong quá trình sử dụng Apipie mình ngộ ra, hy vọng giúp ích cho các bạn
All rights reserved