developer tip

Web Api에 간단한 게시

optionbox 2020. 11. 5. 07:56
반응형

Web Api에 간단한 게시


웹 API를 사용하기 위해 게시 요청을 받으려고합니다. 다음은 내 API 컨트롤러입니다.

public class WebsController : ApiController
{
    [HttpPost]
    public void PostOne(string id)
    {
    }

    [HttpPost]
    public void PostTwo(Temp id)
    {
    }
}

조치를 취하기 위해 webapi 경로를 변경했습니다. Temp 모델은 다음과 같습니다.

public class Temp
{
    public string Id { get; set; }
}

내 견해는 다음과 같습니다

@using (Ajax.BeginForm(new AjaxOptions
{
    Url = "/api/webs/postone",
    HttpMethod = "post"
}))
{
    <input name="id" id="id" value="2" />
    <input type="submit" value="submit" />
}

위의 코드는 이와 같이 매개 변수 앞에 [FromBody] 속성을 넣지 않는 한 postone에서 전혀 작동하지 않습니다.

[HttpPost]
public void PostOne([FromBody]string id)
{
}

그런 다음 작업을 수행하지만 ID는 여전히 null입니다. 텍스트 상자의 값으로 채워지지 않습니다.

나는를 변경한다면, UrlAjax.BeginFormposttwo있는 모델을 Temp멋지게 작동하며, Id필드는 텍스트 상자에 적절한 값을 가져옵니다.

누구든지 이것이 발생하는 이유와 웹 API 작업에 간단한 값을 게시하는 방법을 설명해 주시겠습니까? 내 말은, 왜 단순한 유형이 아닌 복잡한 유형을 바인딩 할 수 있습니까?


이 질문을 한 지 꽤 오래되었습니다. 이제 나는 그것을 더 명확하게 이해하고 다른 사람들을 돕기 위해 더 완전한 대답을 할 것입니다.

Web API에서 매개 변수 바인딩이 어떻게 발생하는지 기억하는 것은 매우 간단합니다.

  • 당신이 경우 POST간단한 유형, 웹 API는 URL에서 바인딩을 시도
  • 당신이 경우 POST복잡한 유형은 웹 API의 시도 (이 용도에게 요청의 몸에서 바인딩하는 media-type포매터를).

  • URL에서 복합 유형을 바인딩하려는 경우 [FromUri]작업 매개 변수에서 사용 합니다. 이것의 제한은 데이터의 길이와 URL 문자 제한을 초과하는 경우입니다.

    public IHttpActionResult Put([FromUri] ViewModel data) { ... }

  • 요청 본문에서 간단한 유형을 바인딩하려면 작업 매개 변수에 [FromBody]를 사용합니다.

    public IHttpActionResult Put([FromBody] string name) { ... }

참고로 PUT무언가를 업데이트하기 위해 요청 (단지 문자열)을 한다고 가정 해 보겠습니다 . URL에 추가하지 않고 모델에 속성이 하나만있는 복합 유형으로 전달하기로 결정한 경우 datajQuery ajax 매개 변수는 다음과 같습니다. 데이터 매개 변수에 전달하는 개체에는 속성 이름이 비어있는 속성이 하나만 있습니다.

var myName = 'ABC';
$.ajax({url:.., data: {'': myName}});

웹 API 작업은 다음과 같습니다.

public IHttpActionResult Put([FromBody] string name){ ... }

이 asp.net 페이지는 모든 것을 설명합니다. http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

참고 URL : https://stackoverflow.com/questions/19093603/simple-post-to-web-api

반응형