2014-01-27 2 views
3

나는 ...ASP.NET WebApi - WebApi 메서드에 컬렉션을 게시하려면 어떻게해야합니까? 내가 누구의 서명이처럼 보이는 ASP.NET WebApi 방법이있는 경우

public HttpResponseMessage PostCustomer(Customer customer) { 
    // code to handle the POSTed customer goes here 
} 

, 그것을 알고있는 것처럼 ..then 형태로 컬렉션을보고는 항목이 있는지 확인합니다 바인딩 WebApi 모델 Customer 클래스의 속성 이름과 일치하는 클래스의 인스턴스를 만들고 메서드에 전달 된 클래스의 새 인스턴스에 바인딩합니다.

일부 개체 컬렉션을 POST 할 수 있도록하려면 어떻게해야합니까? 즉,이처럼 보이는 WebApi 방법 ...

public HttpResponseMessage PostCustomers(IEnumerable<Customer> customers) { 
    // code to handle the POSTed customers goes here 
} 

어떻게

는 호출 코드는 POST 설정 것 갖고 싶어?

고객 개체에 컬렉션이라는 속성 (예 : 고객의 주문)을 지정하려는 경우에도 동일한 질문이 적용됩니다. HTTP POST는 어떻게 설정됩니까?

질문의 이유는 델파이를 사용하는 사람이 내 서버에 정보를 POST 할 수있게 해주는 컨트롤러를 쓰고 싶다는 것입니다. 관련성이 있는지 모르겠지만 그 경우에 더 잘 언급한다고 생각합니다. 하나의 객체에 대해이 작업을 수행하는 방법을 알 수 있지만 (첫 번째 코드 스 니펫 참조) 컬렉션에 대해 어떻게 수행하는지 볼 수 없습니다.

누구든지 도움을 줄 수 있습니까?

+1

당신이 편안하고 패턴 건가요 :

[ResponseType(typeof(Customer))] public async Task<IHttpActionResult> PostCustomer(IEnumerable<Customer> customers) { if (!ModelState.IsValid) { return BadRequest(ModelState); } db.Customers.AddRange(customers); await db.SaveChangesAsync(); return StatusCode(HttpStatusCode.Created); } 

클라이언트 코드

여러 개체를 작성하려면? 그렇다면 작업은 싱글 톤 수준이어야합니다. – Maess

+0

솔직히 말해서, 나는 그것을 일하게하는 가장 쉬운 방법을 찾고 있습니다! Delphi 개발자는 한 번에 전체 더미의 데이터를 보내려고합니다. 따라서 질문을 던집니다. 나는 한 번에 하나씩 들어오는 것을 꺼리지 만, 그는 그에게 문제를 일으킬 것이라고 말한다. 나는 가능하다면 그에게 수집품을 보내도록하고 싶다. 그게 끝날 수 있습니까? 감사합니다 –

+1

@AvrohomYisroel : 구체적으로 무엇을 찾고 계십니까? 요청의 형식이 어떻게 보이는지? Delphi 클라이언트가 Json 형식으로 데이터를 보낼 수 있습니까? 예를 들어 json의 개체 컬렉션이 [{ "Age": 10, "Id": 1}, { "Age": 35, "Id": 2}, { "Age" 23, "Id": 3}] –

답변

1

완벽하게 작동합니다.

public async Task<string> PostMultipleCustomers() 
{ 
     var customers = new List<Customer> 
     { 
      new Customer { Name = "John Doe" }, 
      new Customer { Name = "Jane Doe" }, 
     }; 
     using (var client = new HttpClient()) 
     { 
      HttpResponseMessage response = await client.PostAsJsonAsync("http://<Url>/api/Customers", customers); 
      if (response.IsSuccessStatusCode) 
      { 
       var result = await response.Content.ReadAsStringAsync(); 
       return result; 
      } 
      return response.StatusCode.ToString();    
     } 
} 
+0

어떻게 도움이됩니까? 나는 웹 API 호출의 소비자로부터 HTTP 포스트를 설정하는 방법을 물었다.웹 API 자체에 대한 코드를 보여 주었는데, 결코 문제가되지 않았습니다. –

+0

포인트 @AvrohomYisroel을 얻었습니다. 편집을 참조하십시오. –