을받지 못했습니다.ASP.Net 웹 API이 속성 라우팅 HTTP의 POST 액션은 내가 간단한 ASP.Net 웹 API이 컨트롤러가 올바른 매개 변수
<form action="/api/method/" method="post">
<input type="text" name="msg" value="Tim" />
<input type="submit" />
</form>
페이지를로드하고 양식을 제출하면 결과 문자열은 "hello John"
입니다. 양식의 방법을 post
에서 get
으로 변경하면 결과는 "hello Tim"
으로 변경됩니다. 컨트롤러에 게시 할 때 msg
매개 변수가 작업으로 라우팅되지 않은 이유는 무엇입니까? 는 HTTP GET가 산만
은 ========== EDIT 1 ==========
는에-경우 그냥-, 컨트롤러의이 버전은 또한받을 실패 게시 된 양식에서 올바른 msg
매개 변수 :
[Route("api/method/{msg?}")]
[HttpPost]
public string Method(string msg = "John")
{
return "hello " + msg;
}
가 ========== 편집 2 ==========
내가 기본 경로를 변경하지 않은 그래도 다음과 같이 보입니다.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
다음이
HTML Form
[FromBody]
속성을 사용하지 않고, 시도 사용하려는 경우? 일반적으로 GET은 자원을 검색하는 데 사용되고 UPDATE/POST는 자원을 수정하는 데 사용됩니다. 그 맥락에서 두 가지 동사를 모두 받아들이는 방법은별로 의미가 없습니다. 내기를 헤지해야한다면 두 가지 방법을 분리해도 문제가되지 않을 것입니다. – BenjaminPaul실제 앱은 POST 만 사용하지만 GET을 사용하면 브라우저에 URL로 붙여 넣기가 더 쉽습니다. 차별화 할 좋은 이유가 없다면 나는 귀찮게하지 않습니다. – dumbledad
당신은 REST 원리의 위반을 고려하지 않는다면 좋은 이유는 아닙니다. 나는 그렇게 할 것입니다! – BenjaminPaul