2013-10-19 1 views
0

MVC4를 사용하여 API를 만들려고 시도한 것은 이번이 처음입니다. 지금까지는 괜찮습니다. 연습을 위해 내 현재 POST 보내기 메서드 대신 GET 메서드에서 queryString을 사용하여 모델을 보내려고합니다.C# MVC API는 GET queryString을 사용하여 값을 보냅니 까?

나는 시작하는 방법을 알지 못하고 무엇을해야합니까? 조언을 좀 할 수 있니?

색인보기를 그대로 사용할 수 있습니까? 또는 무엇인가를 바꿀 필요가 있습니까?

또한 목록을 표시해야하는 기존의 GET 메서드를 유지하고 싶습니다. 쿼리 문자열을 보내는 새 GET 메서드를 추가하면 방해가 될 것이라고 생각하십니까?

모든 조언은^_^잘

namespace MessageHandler.Models 
{ 
    public class Message 
    { 
     public int Id { get; set; } 
     public double Amount { get; set; } 
     public string PaymentMessage { get; set; } 
     public string Name { get; set; } 
     public string Adress { get; set; } 
    } 
} 





namespace MessageHandler.Services 
{ 
    public class MessageRepository 
    { 
     private const string CacheKey = "MessageStore"; 

     public MessageRepository() 
     { 
      var ctx = HttpContext.Current; 
      if (ctx != null) 
      { 
       if (ctx.Cache[CacheKey] == null) 
       { 
        var messages = new Message[] 
        { 
         new Message 
         { 
          Id = 1, PaymentMessage = "payment for order 23434", 
          Name = "Christer Glenning", Adress = "Grenvagen 24", 
          Amount = 2300 
         }, 
         new Message 
         { 
          Id = 2, PaymentMessage = "payment for order 24354", 
          Name = "Carl Ingemar", Adress = "Regnbagen 446", 
          Amount = 44 
         } 
        }; 
        ctx.Cache[CacheKey] = messages; 
       } 
      } 
     } 

     public Message[] GetAllMessages() 
     { 
      var ctx = HttpContext.Current; 

      if (ctx != null) 
      { 
       return (Message[])ctx.Cache[CacheKey]; 
      } 

      return new Message[] 
      { 
       new Message 
       { 
        Id = 0, 
        Name = "placeHolder" 
       } 
      }; 
     } 

     public bool SaveMessage(Message message) 
     { 
      var ctx = HttpContext.Current; 

      if (ctx != null) 
      { 
       try 
       { 
        var currentData = ((Message[])ctx.Cache[CacheKey]).ToList(); 
        currentData.Add(message); 
        ctx.Cache[CacheKey] = currentData.ToArray(); 

        return true; 
       } 
       catch (Exception exp) 
       { 
        Console.WriteLine(exp.Message); 

        return false; 
       } 
      } 
      return false; 
     } 

    } 
} 






using MessageHandler.Models; 
using MessageHandler.Services; 

namespace MessageHandler.Controllers 
{ 
    public class MessageController : ApiController 
    { 
     private MessageRepository repo; 

     public MessageController() 
     { 
      this.repo = new MessageRepository(); 
     } 

     public Message[] Get() 
     { 
      return repo.GetAllMessages(); 
     } 

     public HttpResponseMessage Post(Message message) 
     { 
      this.repo.SaveMessage(message); 

      var response = Request.CreateResponse<Message>(System. 
          Net.HttpStatusCode.Created, message); 

      return response; 
     } 
    } 
} 





<header> 
    <div class="content-wrapper"> 
     <div class="float-left"> 
      <p class="site-title"> 
       <a href="~/">API</a></p> 
     </div> 
    </div> 
</header> 
<div id="body"> 
    <ul id="messages"></ul> 

    <form id="saveMessageForm" method="post"> 
     <h3>Create a new Message</h3> 
     <p> 
      <label for="messageId">Id:</label> 
      <input type="text" name="Id" /> 
     </p> 

     <p> 
      <label for="messagePaymentMessage">Message:</label> 
      <input type="text" name="PaymentMessage" /> 
     </p> 

     <p> 
      <label for="messageName">Name:</label> 
      <input type="text" name="Name" /> 
     </p> 

     <p> 
      <label for="messageAdress">Adress:</label> 
      <input type="text" name="Adress" /> 
     </p> 

     <p> 
      <label for="messageAmount">Amount:</label> 
      <input type="text" name="Amount" /> 
     </p> 
       <input type="button" id="saveMessage" value="Save" /> 
    </form> 
</div> 

@section scripts 
{ 
<script type="text/javascript"> 
    $(function() 
    { 
     $.getJSON('/api/message', function (messagesJsonPayload) { 
      $(messagesJsonPayload).each(function (i, item) { 
       $('#messages').append('<li>' + item.PaymentMessage + '</li>' + 
             '<li>' + item.Name + '</li>' + 
             '<li>' + item.Adress + '</li>' + 
             '<li>' + '$' + item.Amount.toFixed(2) + '</li>' + '<br>'); 
      }); 
     }); 
    }); 
</script> 

<script type="text/javascript"> 

    $('#saveMessage').click(function() 
    { 
     $.post("api/message", 
       $("#saveMessageForm").serialize(), 
       function(value) 
       { 
        $('#messages').append('<li>' + value.PaymentMessage + '</li>' + 
             '<li>' + value.Name + '</li>' + 
             '<li>' + value.Adress + '</li>' + 
             '<li>' + '$' + value.Amount.toFixed(2) + '</li>'); 
       }, 
       "json" 
     ); 
    }); 
</script> 
} 

답변

0

, 내가 빌드하는 API에 대한 전문가가 아니지만, 난 당신이 다시 단계를 필요가 있다고 생각하고, API 구축을위한 개념 학습 여기에 도움이된다 (특별히 REST 하나). 여기

당신을 위해 어쩌면 유용한 링크가있다 :

build-restful-apis-with-aspnet-web-api

REST API Tutorial

관련 문제