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입니다. 텍스트 상자의 값으로 채워지지 않습니다.
나는를 변경한다면, Url
의 Ajax.BeginForm
에 posttwo
있는 모델을 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에 추가하지 않고 모델에 속성이 하나만있는 복합 유형으로 전달하기로 결정한 경우 data
jQuery 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
'developer tip' 카테고리의 다른 글
인덱스 속성을 MOQ하는 방법 (0) | 2020.11.05 |
---|---|
PHP 세션이 하위 도메인으로 전달되도록 허용 (0) | 2020.11.05 |
GoLang에서 문자열을 어떻게 비교합니까? (0) | 2020.11.05 |
매개 변수를 사용하거나 사용하지 않고 사용할 수있는 Python 데코레이터를 만드는 방법은 무엇입니까? (0) | 2020.11.05 |
WSDL이 웹 서비스의 SOAP 버전 (1.1 또는 1.2)을 나타낼 수 있습니까? (0) | 2020.11.05 |