일반적으로 IIS에서 웹 사이트 (ASP .Net MVC라고 가정 함)를 호스팅 할 때 서버 측에 대한 요청은 대부분 http 동사의 두 가지 카테고리, 즉 GET
또는 POST
으로 분류됩니다. 아래에 언급 된 ASP.NET MVC 코드를 살펴보십시오. 왜
를 지금하자 우리는 (모든 자바 스크립트없이) 일반 바닐라 ASP .NET MVC 프레임 워크를 사용하는 경우 먼저 이해 : 컨트롤러 수준에서 비록 HTTP 동사 중 하나를 사용하여 우리의 행동을 장식 할 수있다 모든 요청은 GET
및 POST
의 두 범주로 분류됩니다.
내 웹 사이트에서 새로운 사용자를 등록 할 책임이있는 내 웹 사이트에서보기 (일명 웹 페이지)를했다고 가정 해 봅니다.당신은 당신의 브라우저에서 레지스터보기/웹 페이지를로드하는 브라우저의 주소 표시 줄에 http://localhost:9896/Account/Register/
URL을 입력
namespace MvcTestApp.Controllers
{
// GET: /Account/Register
[HttpGet]
public ActionResult Register()
{
return View();
}
//
// POST: /Account/Register
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
}
}
: 당신은 아래의 컨트롤러 코드를 볼 수 있습니다. 이는 웹 페이지에 대한 첫 번째 요청과 같아서 웹 페이지를 처음으로 가져 오는 동안 브라우저가 자동으로 기본값을 HttpGet
동사로 기본값으로 설정합니다. 그래서 [HttpGet]
동사 주석 방법 아래이 경우 호출됩니다 :
[HttpGet]
public ActionResult Register()
{
return View();
}
지금 페이지에 내가 등록에 관련된 모든 세부 정보를 입력 한 후에 내가 등록 절차를 시작합니다 버튼을했습니다. 당신은 웹 페이지의 소스를 보면 당신은 버튼에 대한 HTML 코드 아래 참조 :
<input type="submit" value="Register" />
때마다 당신이 submit
간단한 작업이의 업데이트 된 내용을 제출/게시하는 것입니다 형식의 HTML 컨트롤을 클릭 현재 페이지를 서버에 보냅니다. 서버 측 요청을 수행하는 input
html 컨트롤을 포함하여 모든 html 컨트롤은 브라우저를 통해 HttpPost
동사 요청 만 할 수 있습니다. 정확하게 동일한 URL에 대한 서버에 대한 동사 요청은 httpPost
이므로 아래에 언급 된 방법으로 HttpPost
이라는 문자가 붙습니다. ASP.Net 런타임은 실제로 HTTP POST 요청하는 클라이언트 요청에서이 정보를 획득하고, 따라서 [HttpPost]
주석 갖는 컨트롤러에서 아래의 방법을 호출하기로 결정 : 따라서 한 당신이로
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
.....
.....
}
을 귀하의보기/웹 페이지에 자바 스크립트를 사용하지 않고 궁극적으로 http get (처음) 요청 또는 http post (HTML 제출 컨트롤 사용) 요청을합니다.
CRUD 작업 중 Create 및 Update/Modify 작업은 [HttpPost]
으로 주석 된 동일한 방법으로 처리됩니다.
- 엔드 포인트는 멱등해야합니다 : 그래서 안전 또 다시 요청을 다시 실행 조건 아래 두 가지가 만족 될 때
HTTP 넣어 동사는 자원을 생성/대체하는 데 사용됩니다.
- URI는 업데이트 할 리소스의 주소 여야합니다.
put 대 게시물 here에 대한 자세한 내용을 볼 수 있습니다.
서버 측 비즈니스 시나리오에서 HTTP put verb와 관련된 제약 조건을 관리 할 수 있다면 ASP.NET MVC는이를위한 조항을 가지고 있습니다. 컨트롤러 내부에서 액션을 만들고 [HttpPut]
으로 꾸며서 브라우저에서 http put 동사를 사용하여 호출 할 수 있습니다.
글쎄, 어떤 시나리오에서 put verb로 정한 기준을 만족시키는 경우에도 HTTP 제출 버튼을 사용하여 호출 할 수 없습니다.
$.ajax({
url: '/Account/Register',
type: 'PUT',
success: function(result) {
// Do something with the result
}
});
또한, HTTP의 사용 I 명시 적으로에 정의 된 작용을 갖는 사람을 참조했습니다 동사를 삭제 주위 : 아래 그림과 같이 당신은 자바 스크립트 XMLHttpRequest의에 의지해야 할 것이다 넣어 동사 호출을 할 (즉, AJAX 호출) MVC 컨트롤러 예 void DeleteUser(int userId)
이것은 http POST 동사를 사용하여 호출됩니다.
요약하면 http PUT, POST 및 DELETE verb의 경우 http POST 동사를 사용하여 호출되는 서버 측에서 작업/메소드 만 있습니다. [HttpPut]
또는 [HttpDelete]
으로 내 MVC 작업을 꾸미려고하는 일반적인 비즈니스 응용 프로그램에서 시나리오를 발견하지 못했습니다.
희망 사항을 통해 도움이됩니다.
"다릅니다." 웹 응용 프로그램의 경우 웹 서버는 일반적으로 웹 스택 (예 : ASP.NET)에 대한 제어를 "해제"합니다. 그러나 다양한 요 청 (차단되지 않은 경우)의 경우 웹 서버는 "정적 컨텐츠"를 제공하는 데 상당히 만족할 것입니다. 종종 "맵핑"과 "핸들러"가 관련되어 있습니다. –
다음 내용을 읽어보십시오. http://www.apacheweek.com/features/put –