Tôi có giao diện API Web Tôi đang cố gắng thích ứng với kiến trúc nhiều bên thuê. Trước đây, chúng tôi đã có một chế độ WCF, theo đó chúng tôi đã chuyển một tham số, id ứng dụng, đến dịch vụ, sau đó lưu trữ thông tin này để sử dụng trong mã sau này. Điều này có nghĩa là Client Id không phải là tham số đầu tiên được truyền cho mọi cuộc gọi.Tôi làm cách nào để thực thi mã trước (MỌI) hành động API Web?
Tôi muốn làm điều tương tự với Web API, ví dụ, thay vì phải:
GetDocument (int ClientId, int documentId) GetDefault (int ClientId) GetImage (int ClientId, int ImageID)
có chỉ:
GetDocument (int documentId) GetDefault() GetImage (int ImageID)
Nhưng tôi cần một số cách t o làm như sau:
- Lấy ClientId từ con đường
- Đặt giá trị này vào đối tượng nhà nước tôi đã có
Tất cả trước khi cuộc gọi thực sự được thực thi. Tôi nghĩ rằng tuyến đường sẽ được viết lại - tôi ổn với tuyến đường phải có id khách hàng trong đó, không phải API của tôi. Vì vậy, các cuộc gọi đến GetDefault có thể trông giống như:
/Document/GetDefault/1
khi API là
GetDefault()
Suy nghĩ? TIA.
Bạn có thể thử một phong tục 'ActionFilter', hoặc thậm chí một' MessageHandler'. –
Tôi nhanh chóng giả lập một cách tiếp cận bằng cách sử dụng chuỗi truy vấn cho clientid, và nó có vẻ là làm việc, nhưng không có trạng thái phiên, đó là nơi tôi đã đặt id khách hàng. Tôi nghi ngờ rằng đây là một thứ tự hoạt động, theo đó trạng thái phiên không tồn tại khi MessageHandler được kích hoạt. Tình trạng phiên làm việc tốt sau này (tôi đã chỉ định một HttpControllerHandler mà thực hiện IRequiresSessionState) ... –
bình luận của bạn là một câu trả lời thỏa đáng cho câu hỏi của tôi, rào cản tiếp theo của tôi mặc dù. Thêm nó như là một câu trả lời và tôi sẽ chấp nhận nó. –