2015-01-21 22 views
5

Trong API RESTful của tôi, tất cả các tài nguyên đang mở rộng cơ sở ResourceSupport của Spring, để đảm bảo hiệu trưởng thù địch theo thiết kế. Ví dụ:Swagger và RESTful nguồn tài nguyên thù địch mùa xuân

public class PoolResource extends ResourceSupport { 
    private String name; 
    ... 
} 

Tôi cũng đang sử dụng Swagger, và tôi đã tự hỏi: là nó có thể cấu hình các vênh vang-ui bằng cách nào đó, để bỏ qua các thuộc tính đến từ ResourceSupport?

enter image description here

(Swagger-ui cung cấp một lối vào thoải mái và dễ dàng của API. Là một trong những lợi ích chính của việc sử dụng Swagger, API là dễ hiểu và chơi xung quanh với các API cho những người, những người thậm chí không quen thuộc với REST API ... miễn là "liên kết" và "rels" đi vào hình ảnh.)

+9

Nếu bạn không muốn hypermedia, tại sao bạn lại sử dụng Spring HATEOAS ngay từ đầu? Nếu bạn muốn hypermedia, tại sao bạn đang sử dụng Swagger (mà chủ động sublink hypermedia)? –

+1

Tôi muốn hypermedia. Sau khi nghiên cứu các hiệu trưởng RESTful, tôi hiểu những lợi ích của việc có hypermedia, vì vậy tôi thực sự muốn thiết kế API [level 3] (http://martinfowler.com/articles/richardsonMaturityModel.html). Đó là lý do tại sao sử dụng Spring HATEOAS. Nhưng hầu hết người dùng API vẫn không nhận thức được hypermedia, và không hiểu tại sao nó lại tốt. Đối với họ, swagger cung cấp một cái nhìn rất tuyệt về API đầy đủ. Nó rất tốt để trình bày nó cho bất cứ ai, và dễ hiểu ngay cả từ bà ngoại của tôi đến một nhà phát triển cao cấp. Điều gì làm bạn có nghĩa là Swagger "subverts hypermedia"? – istibekesi

+2

Hầu hết các câu trả lời đều khuyên tôi không nên sử dụng dao găm, [vinh quang của REST] (http://martinfowler.com/articles/richardsonMaturityModel.html) sẽ giải quyết hầu hết các câu hỏi của tôi. Được rồi, vì vậy hãy tưởng tượng, tôi vứt bỏ đi. Điều này dẫn tôi đến các câu hỏi như thế này: - Tôi có tài nguyên 'Pool'. Điều gì xảy ra nếu tôi có một hệ thống mới được cài đặt, mà không có bất kỳ cá thể hiện tại nào của hồ bơi, vì vậy tôi không thể GET một hồ bơi. Làm thế nào để tạo ra (POST) một hồ bơi hơn? Hồ bơi trông như thế nào? - Còn các trường tùy chọn thì sao? Xác thực? Bắt buộc ... etc? - Còn tài liệu "ngoại tuyến" thì sao? – istibekesi

Trả lời

0

Cách duy nhất hợp lý để ẩn nó sẽ ẩn nó khỏi chính mô hình (có một số cách để làm điều đó, mặc dù nếu bạn sử dụng Spring MVC, tôi không chắc chắn những gì swagger-springmvc hỗ trợ).

Bạn về lý thuyết có thể hack swagger.js để ẩn nó, nhưng đó là một cuộc phiêu lưu hoàn toàn.

6

Tôi khuyên bạn nên vứt bỏ vênh vang và sử dụng một người trông giống như Postman. Postman tạo các liên kết được cung cấp bởi spring-hateoas có thể nhấp, vì vậy bạn có thể điều hướng thông qua API khá nhanh chóng. Nếu bạn muốn cung cấp một số thông tin/tài liệu bổ sung, bạn có thể lưu các yêu cầu đó vào bộ sưu tập yêu cầu trong Postman và xuất nó để phân phối. Sau khi tôi đã thử một số công cụ tài liệu để nghỉ ngơi apis, bao gồm raml, swagger, apiary và cuối cùng Postman-bộ sưu tập kết hợp với hateaos, tôi đã tìm thấy sau này là một trong những tôi hài lòng nhất với.

0

Với mùa xuân dữ liệu REST của 2.4.0.RELEASE, bây giờ bạn có nhiều hình thức siêu dữ liệu:

  • ALPS
  • JSON Schema
  • Cài đặt HAL duyệt qua lò xo dữ liệu còn lại-hal-trình duyệt mô-đun và lướt qua hypermedia
0

Bất kỳ một nhìn HAL Trình duyệt

http://api.opensupporter.org/hb2/browser.html#/api/v1

Nó giúp hình dung web của mối quan hệ giữa các nguồn lực, vì vậy doesnt nhất thiết thể hiện ví dụ yêu cầu một tài nguyên, nhưng không có khu vực để hiển thị tài liệu .

Suy nghĩ của tôi là một cách dễ dàng hơn để có được bản thực thi Hateos tự được ghi lại, ở mức độ nào đó. Và có lẽ một trong những liên kết siêu văn bản đó có thể là một trang web được chia sẻ hoặc Các giá trị được chấp nhận có thể nằm trong tài liệu tôi đã đề cập ở trên.

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