drakov - Mock server thực hiện những đặc tả API Blueprint
Community
Người ta đã thiết lập một nhóm Google để hỗ trợ trả lời các câu hỏi mà bất kỳ người dùng nào của Drakov có thể mắc phải.
Xem tại đây: https://groups.google.com/forum/?hl=en#!forum/drakov-api-server
Ghi chú về khả năng tương thích của Node.js
Kể từ phiên bản 1.0.2, một phiên bản của Drafter package đang được sử dụng, cố gắng cài đặt phiên bản với C (nhanh hơn), nhưng sẽ phải dùng đến nếu việc biên dịch gói này không thành công với Drafter.js.
Hiện gói này không cài đặt trên Node.js phiên bản 7+. Tất cả các phiên bản bên dưới và bao gồm cả Node.js 6.x sẽ hoạt động tốt.
MSON support
Kể từ phiên bản 0.1.12 MSON support hiện đã được cung cấp.
Đăng nhập để trợ giúp với gỡ lỗi yêu cầu kết hợp
Drakov cung cấp một số nhật ký trong các tình huống sau:
- Khi path của request không khớp với các endpoints
- Khi header của request không khớp với header schema
- Khi body của request không khớp với body schema
Chế độ kiểm tra sửa lỗi (Debug Mode): Khi cờ --debugMode
được thiết lập lên tất cả các yêu cầu không phù hợp sẽ được đổ trên các bản ghi trên Drakov. Ngoài ra Drakov sẽ gửi một tải trọng chi tiết (detail payload) trong 404 response.
Cài đặt
npm install -g drakov
Khởi động
drakov -f <glob expression to your md files> -s <comma delimited list of static file paths> -p <server port>
Ghi chú:
- Biểu thức Glob là bắt buộc
- Nếu một danh sách các đường dẫn tập tin tĩnh được cung cấp, sau đó Drakov sẽ proxy các tập tin tĩnh
- Cổng máy chủ là tùy chọn và mặc định là 3000
- Tiêu đề CORS được gửi theo mặc định, bạn cần phải sử dụng
--disableCORS switch / property
Khởi động file config
drakov --config config.js
Chú ý: Phương thức hoạt động này sẽ tải cấu hình của bạn từ một tệp Javascript phải xuất đối tượng đối số được hỗ trợ trong mô đun đối số.
Tất cả các đối số dòng lệnh bên ngoài --config
sẽ bị bỏ qua, và mặc định sẽ được sáp nhập.
Khởi động với file config .drakovrc
drakov
Tương tự như các tiện ích như JSHint, drakov sẽ tìm tệp .drakovrc trong đường dẫn hiện tại nơi drakov được thực hiện và đi đến path.
Tệp .drakovrc
phải là một mô-đun Node.js hợp lệ xuất ra một đối tượng cấu hình Drakov hợp lệ như sẽ được sử dụng với --config
switch.
API discovery
drakov -f <glob expression to your md files> --discover
Ví dụ với đối số dòng lệnh
Chỉ với biểu thức glob
drakov -f "../com/foo/contracts/*.md"
Với biểu thức glob và đường dẫn tĩnh duy nhất
drakov -f "../com/foo/contracts/*.md" -s "../path/to/static/files"
Với biểu thức glob và nhiều đường dẫn tĩnh (phải được phân cách bởi gạch ngang không có dấu cách)
drakov -f "../com/foo/contracts/*.md" -s "../path/to/static/files" -s "../second/path/to/static/files"
Với biểu thức glob và đường dẫn tĩnh có điểm gắn kết cụ thể
drakov -f "../com/foo/contracts/*.md" -s "../path/to/static/files=/www/path"
Với biểu thức glob và đường dẫn tĩnh có điểm gắn kết cụ thể với các dấu phân cách khác nhau gắn kết đường dẫn
drakov -f "../com/foo/contracts/*.md" -s "../path/to/static/files:/www/path" -d ":"
Với biểu thức glob và cổng máy chủ xác định
drakov -f "../com/foo/contracts/*.md" -p 4007
Khi chạy drakov và ràng buộc với IP công cộng
drakov -f "../com/foo/contracts/*.md" --public
Tải lại Drakov khi các tệp tin đặc tả được tải thay đổi
Bạn có thể nói với Drakov để xem các thay đổi trong các tập tin spec được nạp. Khi thay đổi được phát hiện, Drakov sẽ tải lại.
drakov -f "../com/foo/contracts/*.md" --watch
CORS Header
Theo mặc định tiêu đề CORS được gửi, bạn có thể vô hiệu hóa nó bằng chuyển đổi --disableCORS
.
drakov -f "../com/foo/contracts/*.md" --disableCORS
Tự động trả lời các yêu cầu của OPTIONS
Khi bạn chạy máy chủ để thử nghiệm API trên cổng khác với ứng dụng của bạn, nó rất tiện dụng để cho phép chia sẻ nguồn gốc chéo (CORS). Để làm việc này bạn cũng cần phải lắng nghe trên mọi tuyến đường cho các yêu cầu OPTIONS.
drakov -f "../com/foo/contracts/*.md" --autoOptions
Chạy trên Public Interface
Mặc định Drakov chỉ liên kết với localhost, để chạy trên tất cả các giao diện IP công cộng sử dụng --public
.
drakov -f "../com/foo/contracts/*.md" --public
SSL Support
Để kích hoạt SSL, bạn phải cung cấp cả khóa và chứng chỉ. Sử dụng các tham số --sslKeyFile
và --sslCrtFile
để xác định đường dẫn đến tệp khoá và chứng chỉ. Khi đã bật SSL Drakov sẽ chỉ đáp ứng các yêu cầu HTTPS.
drakov -f "../com/foo/contracts/*.md" --sslKeyFile="./ssl/server.key" --sslCrtFile="./ssl/server.crt"
Chế độ tàng hình (Stealth Mode)
Trong một số trường hợp, bạn có thể muốn ngăn chặn việc log các output của Drakov. Để làm như vậy, chạy là với các tùy chọn --stealthmode
.
drakov -f "../com/foo/contracts/*.md" --stealthmode
Trì hoãn Response
Trong một số trường hợp, bạn có thể muốn buộc Drakov trì hoãn gửi một câu trả lời. Để làm điều này đơn giản hãy sử dụng đối số --delay
sau một số (ms).
drakov -f "../com/foo/contracts/*.md" --delay 2000
Allow Methods Header
Đối với các phương pháp HTTP như DELETE, bạn có thể muốn Drakov trả lại chúng trong các phương pháp thích hợp cho phép tiêu đề. Bạn có thể làm điều này bằng cách sử dụng đối số --method
.
drakov -f "../com/foo/contracts/*.md" --method DELETE
drakov -f "../com/foo/contracts/*.md" --method DELETE --method OPTIONS
Allow Headers Header
Đối với tiêu đề HTTP như Authorization, bạn có thể muốn Drakov trả lại chúng trong các phương pháp thích hợp cho phép tiêu đề. Bạn có thể làm điều này bằng cách sử dụng đối số --header
.
drakov -f "../com/foo/contracts/*.md" --header Authorization
drakov -f "../com/foo/contracts/*.md" --header Authorization --header X-Csrf-Token
Ignore Headers
Trong trường hợp các tiêu đề HTTP nghiêm ngặt phù hợp với bản thiết kế API không cần thiết, bạn có thể sử dụng đối số --ignoreHeader
:
drakov -f "../com/foo/contracts/*.md" --ignoreHeader Cookie --ignoreHeader Authorization
Sử dụng như là Node.js module
var drakov = require('drakov');
var argv = {
sourceFiles: 'path/to/files/**.md',
serverPort: 3000,
staticPaths: [
'/path/to/static/files',
'/another/path/to/static/files',
'/path/to/more/files=/mount/it/here'
],
stealthmode: true,
disableCORS: true,
sslKeyFile: '/path/to/ssl/key.key',
sslCrtFile: '/path/to/ssl/cert.crt',
delay: 2000,
method: ['DELETE','OPTIONS']
};
drakov.run(argv, function(){
// started Drakov
drakov.stop(function() {
// stopped Drakov
});
});`
Sử dụng như một phần mềm Express middleware
var drakovMiddleware = require('drakov').middleware;
var argv = {
sourceFiles: 'path/to/files/**.md',
serverPort: 3000,
staticPaths: [
'/path/to/static/files',
'/another/path/to/static/files',
'/path/to/more/files=/mount/it/here'
],
stealthmode: true,
disableCORS: true,
sslKeyFile: '/path/to/ssl/key.key',
sslCrtFile: '/path/to/ssl/cert.crt',
delay: 2000,
method: ['DELETE','OPTIONS']
};
var app = express();
drakovMiddleware.init(app, argv, function(err, middlewareFunction) {
if (err) {
throw err;
}
app.use(middlewareFunction);
app.listen(argv.serverPort);
});
Tham khảo
<a style="color: #cb3837;"href="https://github.com/Aconex/drakov/blob/master/CHANGELOG.md">https://github.com/Aconex/drakov/blob/master/CHANGELOG.md