Khóa API - trong nội dung hoặc tiêu đề


14

Hiện đang làm việc trên một API và chỉ muốn thu thập ý kiến ​​về nơi tốt nhất để truyền khóa API. Tôi biết rằng không nên vào URL, điều này để lại tiêu đề yêu cầu hoặc nội dung thư.

Nếu tôi đặt nó trong tiêu đề, tôi có thể đưa ra một phương thức chung để kéo nó ra có thể được sử dụng trên tất cả các dịch vụ, tuy nhiên thông số kỹ thuật mà tôi được trao muốn có nó trong cơ thể (nghĩa là trong chuỗi JSON có trong một phần của các đối tượng nối tiếp trong cơ thể POST).


Cũng lưu ý rằng không phải tất cả các loại yêu cầu đều phải có phần thân và nếu bạn muốn xác thực một yêu cầu mà không có phần thân thì khóa sẽ cần phải có trong tiêu đề.
Whymarrh

Câu trả lời:


11

Trong HTTP, có một Authorizationtiêu đề cho điều đó.

Mặc dù nó thường được sử dụng để cung cấp thông tin đăng nhập của người dùng, nhưng trong trường hợp API, nó có thể chứa ID của máy khách và khóa API tương ứng.

Có một số lợi ích:

  • Hỗ trợ từ các khung khác nhau. Nhiều khung sẽ mong đợi Authorizationtiêu đề để thực hiện xác thực. Không sử dụng nó sẽ buộc phải viết mã bổ sung để cung cấp cho các khung đó với các giá trị tùy chỉnh.

  • Hỗ trợ từ các công cụ khác nhau. Ví dụ như CURL.

  • Ít hơn WTF, nơi tôi tìm / đặt khóa API này?!. Từ các nhà phát triển mới gia nhập nhóm (hoặc nhà phát triển thiết kế ứng dụng khách mới cho API của bạn).

  • Sau đó bạn có thể sử dụng các định nghĩa mã trạng thái HTTP như 401 Unauthorized, :

    Phản hồi PHẢI bao gồm trường tiêu đề WWW-xác thực [...] Máy khách có thể lặp lại yêu cầu với trường tiêu đề ủy quyền phù hợp.

Di chuyển nó đến cơ thể của yêu cầu có thể trở nên nhanh chóng đau đớn. Hầu hết các khung và công cụ không làm cho việc thêm phần thân vào yêu cầu trở nên rất đơn giản, điều này có thể khiến API của bạn trở nên khó khăn hơn mức cần thiết.

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.