2011-12-30 55 views
8

Estoy trabajando en una aplicación web .net en C# y necesito consumir un servicio REST de un tercero (no están usando WCF). Vengo de un trasfondo de usar llamadas al servicio web donde había un WSDL disponible y Visual Studio construiría todo el código subyacente y luego estoy listo para comenzar.La mejor forma de consumir JSON desde API REST en .NET

¿No hay ninguna herramienta o marco que pueda simular en cierto modo este comportamiento? Entiendo que sin un contrato no hay forma de que una herramienta sepa qué esperar, pero creo que podría pasar por un asistente donde proporciono parámetros para hacer una llamada REST y luego ayudar al asistente a resolver los detalles de la respuesta. Al final del proceso, tendré un conjunto de objetos que modelarán la API REST de forma similar al comportamiento del servicio web.

Sé que REST y JSON tienen grandes ventajas, pero la falta de un contrato estándar para permitir la generación automática de código parece un verdadero paso atrás.

¿Me está perdiendo algo obvio o es solo el estado actual de las cosas al consumir REST en .NET? ¿Realmente necesito escribir el código de la placa de la caldera para cada nueva API?

+0

No estoy seguro de que esto ayude en absoluto, pero es posible que desee echar un vistazo al proyecto RESTful WCF WADL: http://wadl.codeplex.com/ –

+0

Si puede conectarse al servicio REST a través de HTTP en el puerto 80, deberías poder conectarte usando Visual Studio y tener el código generado para ti. ¿Qué me estoy perdiendo? – phil

+0

Phil ¿tienes una muestra de esto? ¿Está agregando la referencia como referencia de servicio? Por ejemplo, esta url [enlace] (http://api.justin.tv/api/clip/show/1278312.json?jsonp=) trae de vuelta un objeto json válido, ¿cómo agregaría esto? – Kywillis

Respuesta

2

Sugeriría mirar en el WCF REST Starter Kit All up page.

Descargar aquí: WCF REST Starter Kit Preview 2

Documentación aquí: WCF Rest Starter Kit GUide de desplazamiento hacia abajo para 'Servicios REST El consumo con HttpClient'

Usted va a terminar con el ejemplo ReadAsJasonDataContract

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

Esto parece ser un razonable de cómo hacerlo How-2 on CodeProject

Si se siente como estar un poco más las manos y se lo quiere eek más rendimiento a continuación, haciendo sus propias peticiones web y el uso de JSON.NET manejar la serialización es otra buena opción. JSON.Net (Revelando que JSON.Net ha sido escrito por un colega)

+0

Sé que se requiere el kit de inicio si está ejecutando .NET 3.5, pero ¿qué sucede si estoy en .NET 4? –

+0

Sí. Lo siento ... debería haber sido más claro. Los tipos de serialización/deserailización necesarios están en .NET 4 de forma nativa. –

+0

REST El kit de inicio fue obsoleto hace años. El último trabajo sobre esto está aquí http://wcf.codeplex.com –

5

Puede consultar el uso de RestSharp para acceder a la API REST. Di una muestra, incluyendo un enfoque sobre el uso de AutoMapper para pasar del objeto de transferencia de datos al modelo de dominio en this SO question.

Cuestiones relacionadas