2014-11-04 13 views

Trả lời

1

tôi trích dẫn câu trả lời tác giả ở đây từ https://github.com/khellang/Nancy.Swagger/issues/59

Việc lắp đặt phải được thực sự đơn giản, chỉ cần kéo xuống gói NuGet, thêm module siêu dữ liệu để mô tả tuyến đường của bạn, và nhấn/api-docs. Điều đó sẽ giúp bạn có được JSON. Nếu bạn muốn thêm swagger-ui, bạn phải thêm thủ công ngay bây giờ.

+1

Nó "nên", có. Nó không thực sự hoạt động –

3

Trong dự án hiện tại của tôi, tôi đã xem xét rất nhiều vấn đề này. Tôi đã sử dụng cả nancy.swagger và nancy.swagger.attributes.

Tôi nhanh chóng loại bỏ Nancy.swagger, bởi vì đối với cá nhân tôi, nó không có vẻ đúng khi bạn phải tạo một lớp tài liệu thuần túy cho mỗi mô-đun nancy. Các giải pháp thuộc tính là một chút "sạch" - ít nhất là codebase và tài liệu được ở một nơi. Nhưng rất nhanh điều này đã trở thành không thể duy trì. Mã mô-đun không đọc được vì có nhiều thuộc tính. Không có gì được tạo tự động: bạn phải đặt đường dẫn, tất cả các tham số, ngay cả phương thức http làm thuộc tính. Đây là một bản sao nỗ lực rất lớn. Các sự cố xảy ra rất nhanh, một vài ví dụ:

  • Tôi đã thay đổi POST thành PUT ở Nancy và quên cập nhật thuộc tính [Phương pháp].
  • Tôi đã thêm thông số nhưng không thêm thuộc tính cho thông số đó.
  • Tôi đã thay đổi tham số từ đường dẫn đến truy vấn và không cập nhật thuộc tính.

Quá dễ dàng để quên cập nhật thuộc tính (hãy để giải pháp mô-đun tài liệu đơn lẻ), dẫn đến sự khác biệt giữa tài liệu của bạn và cơ sở mã thực tế. Nhóm giao diện người dùng của chúng tôi ở một quốc gia khác và họ gặp sự cố khi sử dụng API vì docu không được cập nhật.

Giải pháp của tôi? Không trộn mã và tài liệu. Tạo docu từ mã (như Swashbuckle không) IS ok, nhưng thực sự viết docu trong mã và cố gắng công bố mã trong docu là KHÔNG. Nó không tốt hơn là viết nó trong một tài liệu Word cho khách hàng của bạn.

Nếu bạn muốn Swagger docu, hãy thực hiện theo cách Swagger. - Dành chút thời gian với Swagger.Editor và thực sự là tác giả API của bạn theo số YAML. Nó trông tất cả văn bản và khó khăn, nhưng một khi bạn đã quen với nó, nó là không. - Dành một chút thời gian với Swagger.Codegen và thích ứng với nó (nó đã làm một công việc hợp lý để tạo mã máy chủ Nancy và với một vài điều chỉnh cho các mẫu ria mép nó chỉ là những gì tôi cần). - Tự động hóa quy trình của bạn: viết một vài lô để tạo mô-đun và mô hình của bạn từ yaml và sao chép chúng vào kho lưu trữ của bạn.

Lợi ích?Khá nhiều: -

  • nét YAML của bạn bây giờ là sự thật duy nhất của hợp đồng REST của bạn. Nếu ở đâu đó có điều gì đó không quan trọng thì đó là sai.
  • Nancy mã máy chủ là tự động tạo ra
  • codebases Khách hàng được tự động tạo ra (trong trường hợp của chúng tôi đó là Android, iOS và góc)

Vì vậy, bất cứ khi nào tôi thay đổi một cái gì đó trong hợp đồng REST, tất cả codebases là được tái tạo và thêm vào các dự án trong một đợt. Tôi chỉ cần nói với các đội một cái gì đó đã được cập nhật. Họ không phải xem qua một số tài liệu và tìm kiếm nó. Họ chỉ có mã của họ được tái sinh và có thể thấy một số lỗi biên dịch, trong trường hợp phá vỡ các thay đổi.

Tôi vẫn sử dụng nancy.swagger (.annotations)? Có, tôi sử dụng nó trong một dự án khác, mà chỉ có một điểm cuối với một vài phương pháp. Chúng không thay đổi thường xuyên. Nó không phải là giá trị nỗ lực để thiết lập tất cả mọi thứ, tôi có docu swagger của tôi nhanh chóng và chạy. Nhưng nếu dự án của bạn lớn, API đang thay đổi và bạn có nhiều mã dựa trên API của mình, lời khuyên của tôi là đầu tư một thời gian vào một thiết lập vênh vang thật.

Các vấn đề liên quan