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--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