Đối với một công ty khởi nghiệp SaaS mà tôi tham gia, tôi đang xây dựng cả API web RESTful và một vài ứng dụng khách trên các nền tảng khác nhau sử dụng nó. Tôi nghĩ rằng tôi đã tìm ra API, nhưng bây giờ tôi đang chuyển sang các khách hàng. Khi tôi đã đọc về REST, tôi thấy rằng phần quan trọng của REST là khám phá , nhưng dường như có rất nhiều tranh luận giữa hai cách hiểu khác nhau về ý nghĩa thực sự của khám phá:
Khám phá của nhà phát triển : Nhà phát triển mã hóa số lượng lớn các chi tiết API vào máy khách, chẳng hạn như URI của tài nguyên, các tham số truy vấn, các phương thức HTTP được hỗ trợ và các chi tiết khác mà họ đã phát hiện được thông qua việc duyệt tài liệu và thử nghiệm với các phản hồi của API. Loại phát hiện này IMHO yêu cầu liên kết mát mẻ và câu hỏi lập phiên bản API, đồng thời dẫn đến việc ghép nối mã máy khách với API. Có vẻ như không tốt hơn nhiều so với việc sử dụng một bộ sưu tập được ghi chép đầy đủ về RPC.
Khám phá thời gian chạy - Bản thân ứng dụng khách có thể tìm ra mọi thứ nó cần với ít hoặc không có thông tin ngoài băng tần (có lẽ, chỉ có kiến thức về các loại phương tiện mà API xử lý.) Các liên kết có thể nóng. Nhưng để làm cho API hoạt động hiệu quả, dường như cần có nhiều mẫu liên kết cho các tham số truy vấn, điều này làm cho thông tin ngoài dải trở lại. Có thể có những khó khăn khác mà tôi chưa nghĩ đến vì tôi chưa đã đến thời điểm đó trong quá trình phát triển. Nhưng tôi thích ý tưởng về khớp nối lỏng lẻo.
Khám phá thời gian chạy có vẻ là chén thánh của REST, nhưng tôi đang thấy cuộc thảo luận nhỏ quý giá về cách triển khai một ứng dụng khách như vậy. Hầu như tất cả các nguồn REST mà tôi đã tìm thấy dường như giả định rằng Nhà phát triển khám phá. Có ai biết về một số tài nguyên khám phá Thời gian chạy không? Thực hành tốt nhất? Ví dụ hoặc thư viện với mã thực? Tôi đang làm việc trong PHP (Zend Framework) cho một khách hàng. Objective-C (iOS) cho cái còn lại.
Khám phá Runtime có phải là một mục tiêu thực tế, với bộ công cụ và kiến thức hiện tại trong cộng đồng nhà phát triển không? Tôi có thể viết ứng dụng khách của mình để xử lý tất cả các URI theo cách không rõ ràng, nhưng làm thế nào để làm điều này hiệu quả nhất là một câu hỏi, đặc biệt là trên các kết nối băng thông thấp. Dù sao đi nữa, URI chỉ là một phần của phương trình. Điều gì về tạo mẫu liên kết trong ngữ cảnh Thời gian chạy? Làm thế nào về việc giao tiếp những phương pháp nào được hỗ trợ, ngoài việc đưa ra rất nhiều yêu cầu TÙY CHỌN?