API web nên xử lý các tham số sai chính tả / bổ sung như thế nào?


8

Câu hỏi: Đối với API web đối mặt công khai (gửi yêu cầu Nhận / Đăng HTTP, lấy lại dữ liệu JSON / XML), làm thế nào các tham số nên được xử lý sai chính tả hoặc thêm.

Dường như với tôi rằng nếu các tham số không chính xác bị bỏ qua, một lỗi trong mã của người gọi có thể không được chú ý vì họ sẽ nhận được kết quả hợp lệ. Điều này có thể đặc biệt đúng trong các tình huống không rõ ràng bằng cách nhìn vào kết quả trả về.

Tôi chỉ đề cập đến các tham số tùy chọn. Rõ ràng nếu một tham số bắt buộc bị sai chính tả, thì tham số đó sẽ bị coi là thiếu và một lỗi sẽ được trả về.


Như một ví dụ , các Nơi Search gọi API có bốn thông số cần thiết (địa điểm, bán kính, cảm biến và key) và một số thông số tùy chọn (loại là một trong số họ).

Tôi có thể chạy các lệnh này (bằng khóa API) và nhận lại kết quả hợp lệ:

curl "https://maps.googleapis.com/maps/api/place/search/json?location=45.47554,-122.794189&radius=500&sensor=false&key=<api_key>&type=bakery"

curl "https://maps.googleapis.com/maps/api/place/search/json?location=45.47554,-122.794189&radius=500&sensor=false&key=<api_key>&types=bakery"

Lệnh đầu tiên có tham số "loại" ở dạng số ít là tên khóa không hợp lệ. API bỏ qua tham số đó và trả về tất cả các loại thực thể. Trong trường hợp này, lỗi là rõ ràng, nhưng có thể đôi khi (và các lệnh gọi API khác) sẽ không xảy ra.

Câu trả lời:


3

Bỏ qua các tham số bổ sung là thực hành tiêu chuẩn. Thật dễ dàng để viết mã như thế này

if (params.type) { 
  ... 
}

Không đáng để kiểm tra tất cả các tham số đã qua để xem có tham số nào không hợp lệ không. Lỗi chính tả là vấn đề của khách hàng.


1

Nếu đó là một nỗ lực nhỏ để bao gồm một bài kiểm tra sai chính tả cho các tên tham số (bạn muốn làm bao nhiêu công việc, kiểm tra tên của TẤT CẢ các tham số theo danh sách các lỗi chính tả có khả năng nhất?), Tôi có thể làm điều đó nhưng bình thường tôi khuyên bạn chỉ nên bỏ qua các thông số bổ sung bị sai chính tả. Tất nhiên, sẽ rất tuyệt nếu WebService gửi lại thông báo "Không có thông số hợp lệ type, ý bạn là typessao?" nhưng chỉ khi bạn có thời gian để thực hiện nó đúng cách và vì tôi thường không mong đợi loại tin nhắn đó sẽ quay trở lại, tôi sẽ không bỏ lỡ nó nếu nó không có ở đó.


1

Tôi nghĩ rằng nó phụ thuộc vào cách API được chỉ định và ai là người chịu trách nhiệm cho những vấn đề này. Nếu tôi thiết kế API thì tôi sẽ đặt quyền sở hữu để đảm bảo các tham số chính xác được mong đợi (và các giá trị liên quan của chúng nếu có) được xử lý theo cách mong đợi hoặc nếu có đầu vào bất ngờ (theo yêu cầu để bảo vệ phương thức khỏi lạ và dữ liệu lập dị) sau đó ngoại lệ chiếm đoạt được ném hoặc mã lỗi được trả về.

Sau đó tôi sẽ nói rằng tất cả các đầu vào không phải là một phần của danh sách tham số dự kiến ​​không phải là một phần của vấn đề API. Điều đó cho phép bạn cụ thể và sở hữu một đặc điểm kỹ thuật rất xác định và bất kỳ ai muốn sử dụng có trách nhiệm đảm bảo họ sử dụng nó đúng cách.

Bạn đã cung cấp một công cụ và một bộ hướng dẫn về cách sử dụng nó. Làm cho nó có trách nhiệm của người dùng để sử dụng nó đúng.

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.