2011-12-30 59 views
8

Tôi đang làm việc trên một ứng dụng web .net trong C# và tôi cần sử dụng dịch vụ REST từ bên thứ ba (họ không sử dụng WCF). Tôi đến từ một nền tảng của việc sử dụng các cuộc gọi dịch vụ web, nơi có một WSDL có sẵn và Visual Studio sẽ xây dựng tất cả các mã cơ bản và sau đó tôi đã sẵn sàng để đi.Cách tốt nhất để sử dụng JSON từ REST API trong .NET

Có công cụ hoặc khung làm việc nào có thể mô phỏng hành vi này không? Tôi hiểu rằng nếu không có một hợp đồng thì không có cách nào để một công cụ biết được điều gì sẽ xảy ra nhưng tôi nghĩ tôi có thể đi qua một trình hướng dẫn để cung cấp các tham số để thực hiện cuộc gọi REST và sau đó giúp trình hướng dẫn thực hiện các chi tiết của phản hồi. Khi kết thúc quá trình, tôi sẽ có một bộ các đối tượng mô hình hóa REST API tương tự như cách dịch vụ web hoạt động.

Tôi biết rằng REST và JSON có một số lợi thế lớn cho họ nhưng thiếu một tiêu chuẩn trong hợp đồng hộp để cho phép tạo mã tự động có vẻ giống như một bước thực sự ngược.

Tôi có thiếu điều gì đó hiển nhiên hay chỉ là tình trạng hiện tại của việc khi tiêu thụ REST trong .NET? Tôi có thực sự cần viết mã đĩa nồi hơi cho mỗi API mới không?

+0

Tôi không chắc chắn rằng điều này sẽ giúp ích chút nào nhưng bạn có thể muốn xem dự án RESTful WCF WADL: http://wadl.codeplex.com/ –

+0

Nếu bạn có thể kết nối với dịch vụ REST thông qua HTTP trên cổng 80, bạn sẽ có thể kết nối với nó bằng cách sử dụng Visual studio và có mã được tạo cho bạn. Tôi đang thiếu gì? – phil

+0

Phil bạn có mẫu này không? Bạn có thêm tham chiếu làm tham chiếu dịch vụ không? Ví dụ url này [link] (http://api.justin.tv/api/clip/show/1278312.json?jsonp=) mang lại một đối tượng json hợp lệ, bạn sẽ thêm điều này như thế nào? – Kywillis

Trả lời

2

Tôi khuyên bạn nên xem số WCF REST Starter Kit All up page.

Tải ở đây: WCF REST Starter Kit Preview 2

Tài liệu ở đây: WCF Rest Starter Kit GUide Cuộn xuống 'tiêu thụ dịch vụ với HttpClient RESTful'

Bạn sẽ kết thúc bằng cách sử dụng ReadAsJasonDataContract ví dụ

HttpResponseMessage resp = http.Get("friends_timeline.json"); 
resp.EnsureStatusIsSuccessful(); 
ProcessStatusesAsDataContract(resp.Content.ReadAsJsonDataContract<statusList>()); 

này có vẻ là một lý how-to How-2 on CodeProject

Nếu bạn cảm thấy như đang được nhiều hơn một chút tay trên và muốn eek ra hiệu suất hơn sau đó thực hiện các yêu cầu web của riêng bạn và sử dụng để JSON.NET xử lý serialization là tùy chọn tốt bất thường. JSON.Net (Tiết lộ rằng JSON.Net được viết bởi một đồng nghiệp)

+0

Tôi biết bộ khởi động là bắt buộc nếu bạn đang chạy .NET 3.5, nhưng nếu tôi đang sử dụng .NET 4 thì sao? –

+0

Có. Xin lỗi ... nên có ben rõ ràng hơn. Các loại serialize/deserailize cần thiết có trong .NET 4 nguyên bản. –

+0

Bộ khởi động REST đã lỗi thời năm trước. Công việc mới nhất về điều này là ở đây http://wcf.codeplex.com –

5

Bạn có thể xem sử dụng RestSharp để truy cập REST API. Tôi đã đưa ra một mẫu, bao gồm một cách tiếp cận sử dụng AutoMapper để chuyển từ đối tượng truyền dữ liệu sang mô hình miền trên this SO question.

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