2012-07-30 3 views
5

Tôi là curios nếu ai đó có thể chỉ cho tôi một ví dụ tốt/thực hành tốt nhất về tổ chức mã REST API với phiên bản (dựa trên uri, có nghĩa là "/ v1/zzz" và "/ v2/xxx" hoặc thậm chí tốt hơn. tiêu đề) - trong dự án Java/Spring? Tôi sợ rằng tôi đang làm cho nó quá phức tạp trong dự án của tôi ngay bây giờ, vì vậy nó sẽ được tốt đẹp để học hỏi từ những người khác.Thực hành tốt nhất (ví dụ?) Về việc tổ chức mã REST API đã được phiên bản trong dự án Java/Spring?

Làm rõ: không chắc tôi có nên làm qua bộ lọc hay không, và sau đó sử dụng một số mẫu thiết kế để thay đổi hành vi, nhưng điều này sẽ làm cho bộ lọc của tôi khá phức tạp hoặc có thể tôi không nghĩ về một số mẹo DI, vì vậy tôi có thể làm cho mã của tôi sạch hơn. cách tiếp cận đơn giản nhất là một số mẫu chiến lược trong mọi phương thức sẽ có phiên bản khác nhau, nhưng dường như không quá sạch sẽ :-(

+0

Nó sẽ giúp ích rất nhiều nếu bạn có thể cho chúng tôi thấy những gì bạn đang làm đầu tiên, vì sợ rằng chúng tôi sẽ đưa ra đề xuất phức tạp. Hay bạn chỉ đề cập đến mẫu URL? Điều gì khiến bạn nghĩ nó quá phức tạp? Cân nhắc thêm thông tin này qua [sửa] cho câu hỏi của bạn để làm rõ. Cảm ơn bạn. – jmort253

+0

Ngoài ra, làm cách nào để biết khi nào bạn có phiên bản API mới? Tôi giả sử bạn đang tích cực sửa đổi mã của mình, nhưng bạn sử dụng tiêu chí nào để xác định thời điểm chuyển từ v1 sang v2? – jmort253

+0

có thể trùng lặp với [Thực tiễn tốt nhất cho phiên bản API?] (Http://stackoverflow.com/questions/389169/best-practices-for-api-versioning) – jmort253

Trả lời

3

Tôi khuyên bạn nên đọc sách và blog trên Apigee http://offers.apigee.com/api-design-ebook-bw/ Tôi thấy rằng tôi lời khuyên thực sự thiết thực cho việc thiết kế các url và làm xử lý lỗi.

http://www.stormpath.com/blog/spring-mvc-rest-exception-handling-best-practices-part-2 có một bài viết thực sự tuyệt vời về cách cấu hình MVC mùa xuân để làm lỗi generic xử lý cho các ứng dụng yên tĩnh.

đối với lọc trên chấp nhận headrs đó là khá dễ làm từ mùa xuân cho phép bạn thu hẹp ánh xạ phương thức xử lý dựa trên bộ lọc, như trong tiêu đề = trong req lập bản đồ tốt nhất bên dưới.

@RequestMapping(value="/narrow/headers/{name}/{email}/{customerNumber}", 
     method={RequestMethod.POST,RequestMethod.GET}, 
     headers="Referer=http://localhost:8080/SpringMVC/request-mappings.html") 
public ResponseEntity<String> narrowOnHeaders(
     @PathVariable("name")String name, 
     @PathVariable("email") String email, 
     @PathVariable("customerNumber") Integer customerNumber, 
     @RequestHeader("Referer") String referer 
    ) 
+3

URL bị hỏng: 'URL được yêu cầu/api-design-ebook -bw/không tìm thấy trên máy chủ này.' – manuna