3 điểm bởi kunggom 2023-01-11 | 1 bình luận | Chia sẻ qua WhatsApp

Đối với những người phải phát triển và bảo trì các ứng dụng liên quan đến dịch vụ đám mây Microsoft 365 do Microsoft cung cấp, có một thứ gần như không thể né tránh, đó là Microsoft Graph API. Nói ngắn gọn cho những ai chưa biết, đây là một RESTful API cho phép truy cập thống nhất vào mọi tài nguyên đám mây do Microsoft cung cấp. Microsoft cũng cung cấp Graph SDK cho một số ngôn ngữ để sử dụng API này thuận tiện hơn.

Vấn đề là việc kiểm thử các phần sử dụng API này vốn khá khó khăn. Tôi đặc biệt cảm nhận điều đó trong trường hợp Graph API bị rate limit và trả về 429 Too Many Requests. Khi dùng Graph SDK, nếu nhận mã phản hồi 429 do throttling thì SDK sẽ tự động retry theo giá trị Retry-After trong header phản hồi, nhưng đôi khi xử lý thất bại nhanh mà không retry, hoặc áp dụng một chính sách khác với mặc định, lại là lựa chọn tốt hơn. Vấn đề là gần như không có cách phù hợp để kiểm thử những tình huống này trong môi trường phát triển, nên tôi đã từng chỉ nhận ra sau khi phát hành phiên bản đầu tiên rằng cần thay đổi chính sách retry request của Graph SDK khỏi mặc định, rồi mới sửa ở các phiên bản sau.

Microsoft cũng phần nào nhận ra vấn đề này nên đã bổ sung tính năng mock trường hợp trả về mã 429 khi thêm tham số test429=true vào URL request API, nhưng nó có hạn chế là chỉ hoạt động với các endpoint liên quan đến SharePoint/OneDrive.
https://pnp.github.io/blog/post/…

Trong lúc đó, cuối cùng cũng đã có một công cụ đáng mừng xuất hiện vào đầu năm mới: Microsoft Graph Developer Proxy.
Đây là công cụ có thể mock nhiều loại giá trị phản hồi do Graph API trả về, đồng thời tái hiện thuận tiện các lỗi và throttling khác nhau. Một điểm cộng nữa là các request được kiểm thử không cần rời khỏi môi trường phát triển cục bộ. Dù vẫn còn ở giai đoạn đầu phát triển, công cụ này được cho là sẽ ra mắt phiên bản chính thức trong năm nay. Ít nhất với những người làm công việc liên quan, đây thực sự là sự xuất hiện của một công cụ rất tiện lợi.

1 bình luận

 
kunggom 2023-01-11

Xin lưu ý rằng ngay cả trước khi công cụ này xuất hiện, cũng không phải là hoàn toàn không có cách mô phỏng tình huống Graph API bị 429. Quả thực đã có cách dùng các công cụ như Fiddler. Tuy nhiên, nó khá bất tiện.

Theo README, công cụ được giới thiệu ở trên do một người tên là Waldek Mastykarz tạo ra tại cuộc thi hackathon năm ngoái (2022), và nếu xem bài viết blog cũ hơn của ông ấy (2018), bạn sẽ thấy ông giới thiệu cách mô phỏng tình huống SharePoint API bị 429 bằng Fiddler.
https://blog.mastykarz.nl/simulating-throttling-sharepoint/