2017-07-24 31 views
10

Tôi có câu hỏi về cách tốt nhất để xử lý tìm nạp dữ liệu từ API của bên thứ ba trong kiến ​​trúc ứng dụng phượng hoàng của tôi. Về cơ bản, tôi có một bộ điều khiển nhận địa chỉ IP của khách hàng làm thông số. Sau đó, tôi cần tìm nạp vị trí địa lý được liên kết với địa chỉ IP đó từ một API bên ngoài và lưu trữ cả hai trong cơ sở dữ liệu (ví dụ: ipgeolocation).Nơi tốt nhất để tìm nạp dữ liệu từ dịch vụ API của bên thứ ba trong kiến ​​trúc của ứng dụng Phoenix

Ngay bây giờ cách tiếp cận của tôi là sử dụng một phích cắm, và sau đó trả lại kết quả trong cấu trúc kết nối.

Nhưng tôi cũng có thể tìm nạp dữ liệu bằng cách tạo một hàm trực tiếp trong mô hình và sau đó gọi hàm đó trong các hoạt động changeset.

Hoặc có thể có một giải pháp thay thế khác như biến nó thành ứng dụng OTP.

Tìm kiếm một số hướng dẫn về cách tiếp cận tốt nhất ở đây hoặc ít nhất là sự cân bằng giữa nhóm này so với cách khác.

Mặc dù kịch bản của tôi là cụ thể, đây có thể là câu hỏi thiết kế chung mà mọi người gặp phải.

Trả lời

1

Tôi có thể cho bạn biết cách tiếp cận vấn đề tương tự. Ứng dụng của tôi là một ứng dụng web để gửi tin nhắn SMS (tôi sử dụng Twilio làm API của tôi).

Khi người dùng gửi tin nhắn của họ (to_phone_number, body_text, v.v.), tôi lưu nó vào cơ sở dữ liệu mà không thực hiện thêm bất kỳ công việc nào. Tôi cho nó một trạng thái riêng biệt của "Xếp hàng".

Sau đó, tôi có một GenServer trong một vòng lặp chọn lên tất cả các tin nhắn nơi status == xếp hàng và thực hiện các cuộc gọi API. Trong giao dịch, nó thay đổi trạng thái thành "Đã gửi" và trạng thái đó hiển thị cho người dùng trong giao diện người dùng.

Điều này sẽ không hữu ích như một cách tiếp cận nếu người dùng của bạn đang mong đợi dữ liệu vị trí địa lý hiển thị trên màn hình với phản hồi của họ. Dù sao, đây là phương pháp tôi đã dùng cho trường hợp sử dụng của mình ...

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