URL gọi lại liên quan đến API là gì?


98

Tôi đang lùng sục trên mạng và dường như không thể hiểu ý tưởng về một URL gọi lại. Trong trường hợp của tôi, tôi có một số URL gọi lại mà tôi phải tự xác định. Một địa chỉ phổ biến là "URL gọi lại mặc định". Điều này chính xác là gì? Bạn có thể cho một ví dụ bằng tiếng Anh đơn giản không?

Câu trả lời:


67

Một URL gọi lại sẽ được gọi bởi phương thức API mà bạn đang gọi sau khi hoàn tất. Vì vậy, nếu bạn gọi

POST /api.example.com/foo?callbackURL=http://my.server.com/bar

Sau đó, khi /fookết thúc, nó sẽ gửi một yêu cầu đến http://my.server.com/bar. Nội dung và phương thức của yêu cầu đó sẽ khác nhau - hãy kiểm tra tài liệu cho API bạn đang truy cập.


1
Nó có gây ra lỗi nếu URL gọi lại không được đặt chính xác không?
user3768495

@ user3768495 Tôi hy vọng nó sẽ không, nhưng điều đó sẽ phụ thuộc vào việc triển khai API. Về lý thuyết, nó có thể thực hiện phần gọi lại của một giao dịch trong nội bộ và khôi phục bất kỳ thay đổi nào được thực hiện bởi yêu cầu ban đầu nếu lệnh gọi lại không trả lại phản hồi 2xx.
Eric Stein

Tôi có cần gửi phản hồi cho yêu cầu ĐĂNG tại /api.example.com/foo không?
Abhijeet

@Abhijeet Bạn không bao giờ cần . Nếu thích hợp để bao gồm một phản hồi, vâng, hãy làm như vậy.
Eric Stein

Lưu ý riêng, các bạn nghĩ chúng ta nên giữ url gọi lại ở đâu, ở phía máy khách hoặc phía máy chủ?
Khatri

28

Hãy coi nó như một lá thư. Đôi khi bạn nhận được một lá thư, nói rằng yêu cầu bạn điền vào một biểu mẫu, sau đó gửi lại biểu mẫu trong một phong bì có địa chỉ trước, trong phong bì ban đầu chứa biểu mẫu.

Khi bạn đã điền xong biểu mẫu, bạn bỏ nó vào phong bì gửi lại đã cung cấp và gửi lại.

CallbackUrl giống như phong bì trả lại đó. Về cơ bản, bạn đang nói rằng tôi đang gửi cho bạn dữ liệu này. Khi bạn đã hoàn tất, tôi đang ở trên callbackUrl này để chờ phản hồi của bạn. Vì vậy, API sẽ xử lý dữ liệu bạn đã gửi sau đó xem xét lệnh gọi lại để gửi phản hồi cho bạn.

Điều này rất hữu ích vì đôi khi bạn có thể mất nhiều thời gian để xử lý một số dữ liệu và việc người gọi đợi phản hồi là điều vô nghĩa. Ví dụ: giả sử API của bạn cho phép người dùng gửi tài liệu đến nó và quét vi-rút. Sau đó, bạn gửi một báo cáo sau. Quá trình quét có thể mất khoảng 3 phút. Người dùng không thể đợi trong 3 phút. Vì vậy, bạn xác nhận rằng bạn đã nhận được tài liệu và cho phép người gọi liên hệ với doanh nghiệp khác trong khi bạn quét, sau đó sử dụng callbackUrl khi hoàn tất để cho họ biết kết quả quét.


12

Nếu bạn sử dụng URL gọi lại, thì API có thể kết nối với URL gọi lại và gửi hoặc nhận một số dữ liệu. Điều đó có nghĩa là API có thể kết nối với bạn sau (sau lệnh gọi API).

Thí dụ

Biểu đồ

  1. BẠN gửi dữ liệu bằng yêu cầu tới API
  2. API gửi dữ liệu bằng cách sử dụng yêu cầu thứ hai tới BẠN

Định nghĩa chính xác phải có trong tài liệu API.


4

Đó là một cơ chế để gọi một API theo cách không đồng bộ. Trình tự như sau

  1. ứng dụng của bạn gọi url, chuyển làm tham số cho url gọi lại
  2. api phản hồi bằng mã http 20x (tôi đoán là 201, nhưng hãy tham khảo tài liệu api)
  3. api hoạt động theo yêu cầu của bạn trong một khoảng thời gian nhất định
  4. api gọi ứng dụng của bạn để cung cấp cho bạn kết quả, tại địa chỉ url gọi lại.

Vì vậy, bạn có thể gọi api và cho người dùng của bạn biết yêu cầu là "đang xử lý" hoặc "đã mua", sau đó cập nhật trạng thái khi bạn nhận được phản hồi từ api.

Hy vọng nó có ý nghĩa. -G


2

Một trường hợp sử dụng khác có thể là OAuth, nó có thể không được API gọi trực tiếp, thay vào đó URL gọi lại sẽ được trình duyệt gọi sau khi hoàn thành xác thực với nhà cung cấp danh tính.

Thông thường sau khi người dùng cuối nhập mật khẩu tên người dùng, nhà cung cấp dịch vụ nhận dạng sẽ kích hoạt chuyển hướng trình duyệt đến url "gọi lại" của bạn với mã xác thực tạm thời, ví dụ:

https://example.com/callback?code=AUTHORIZATION_CODE

Sau đó, ứng dụng của bạn có thể sử dụng mã ủy quyền này để yêu cầu mã thông báo truy cập với nhà cung cấp danh tính có thời gian tồn tại lâu hơn nhiều.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.