2013-06-01 3 views
0

Я пытаюсь создать какой-то RESTful-API, я знаю, что мой первый проект, вероятно, не похож на реальный шаблон дизайна RESTful. Однако мой реальный вопрос заключается в том, как я должен использовать свое обслуживание с помощью JSON?Потребление WebAPI JSON

В моем так называемом реальном мире, например, я хочу, чтобы мои пользователи войти в систему через службу таким образом у меня есть эта AuthenticationController

namespace RESTfulService.Controllers 
{ 
    public class AuthenticationController : ApiController 
    { 

     public string Get(string username, string password) 
     { 
      // return JSON-object or JSON-status message 
      return ""; 
     } 

     public string Get() 
     { 
      return ""; 
     } 

    } 
} 

Учитывая растущую популярность этой технологии я предположил, что очень мало код будет необходим для потребляя услугу. Мне действительно нужно сериализовать JSON вручную с помощью какого-то стороннего пакета, такого как json.net? Ниже мой проект для клиента

private static bool DoAuthentication(string username, string password) 
{ 
    var client = InitializeHttpClient(); 

    HttpResponseMessage response = client.GetAsync("/api/rest/authentication").Result; 
    if (response.IsSuccessStatusCode) 
    { 

     //retrieve JSON-object or JSON-status message 

    } 
    else 
    { 
     // Error 
    } 

    return true; 
} 

private static HttpClient InitializeHttpClient() 
{ 
    HttpClient client = new HttpClient(); 
    client.BaseAddress = new Uri("http://localhost/"); 

    // Add an Accept header for JSON format. 
    client.DefaultRequestHeaders.Accept.Add(
     new MediaTypeWithQualityHeaderValue("application/json")); 

    return client; 
} 

Как отправить JSON от службы и как интерпретировать его на клиенте?

+1

Не полный ответ, но для использования служб REST вы должны взглянуть на RestSharp. –

+0

Да, я изучал это, но я «надеялся» на какой-то код, который не зависел от третьей стороны. – dbd

+2

На стороне сервера Web API автоматически сериализует возвращаемое значение (в JSON, если это то, что клиент запрашивает). Вы посмотрели http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api? –

ответ

0

Посмотрите на System.Net.Http.HttpContentExtensions в System.Net.Http.Formatting.dll. Как пояснил here (и предложил Майк Уоссоном в указанном выше комментарии), вы можете вызвать ReadAsAsync <T>() на содержание ответа десериализации из JSON (или XML) для типа CLR:

if (response.IsSuccessStatusCode) 
{ 
    var myObject = response.Content.ReadAsAsync<MyObject>(); 
} 

Если вы необходимо настроить десериализацию, эта статья ссылается на дополнительное объяснение MediaTypeFormatters.

Смежные вопросы