문제

개발자가 일반적으로 따르는 특정 패턴이 있습니까? 나는 웹 애플리케이션에서 이전에 많은 생각을하지 않았지만 ASP.NET MVC 라우팅 엔진은 최소한 고려해야합니다.

지금까지 나는 컨트롤러/액션/인덱스 구조 (예 : 제품/편집/1)를 좋아했지만 더 복잡한 URL로 어려움을 겪고 있습니다.

예를 들어, 사용자가 자신의 계정에 보유한 모든 제품을 나열하는 페이지가 있다고 가정 해 봅시다. 어떻게 하시겠습니까? 내 머리 꼭대기에서 목록 페이지와 편집 페이지에 대한 다음 가능성을 생각할 수 있습니다.

  1. user/{user id}/products/list, user/{user id}/products/edit/{product id}
  2. User/{user id}/products, user/{user id}/products/{product id}
  3. 제품? userId = {user id}, Products/edit/{Product ID}

내가 놓친 다른 사람들이 많이 있다고 확신합니다. 어떤 충고?

도움이 되었습니까?

해결책

나는 편안하고 사용자 친화적이며 해킹 가능한 URL을 좋아합니다.

이것은 무엇을 의미 하는가? 시작하겠습니다 사용자 친화적 인 URL. 나에게 사용자 친화적 인 URL은 입력하기 쉬우 며 기억하기 쉬운 것입니다. /Default.aspx?action=show&userID=140 이러한 요구 사항을 충족하지 않습니다. `/user/troethom '과 같은 URL은 논리적으로 보입니다.

이것은 다음 지점으로 이어집니다. ㅏ 해킹 가능한 URL 사용자가 수정하고 결과가 제시 될 수있는 URL입니다. URL이 해킹 가능하고 내 프로필의 URL이 /users/troethom 사용자 목록을 얻으려면 사용자 이름을 제거하는 것이 안전합니다 (/users).

사용 편안한 URL 다른 제안의 뒤에있는 아이디어와 매우 유사합니다. 컴퓨터가 아닌 사용자를위한 URL을 설계하고 있으므로 URL은 사이트의 기술적 백엔드가 아니라 콘텐츠와 관련되어야합니다. '/Users'로서의 URL은 '/user/list'보다 더 의미가 있으며 URL은 '/category/programming/javaScript'로서 더 의미가 있습니다 ( '프로그래밍'카테고리의 하위 범주 'JavaScript'를 나타냅니다. '/show'보다 낫습니다. /12´.

실제로 ID를 생략하는 것이 더 어렵지만 내 세계에서는 노력의 가치가 있습니다.

또한 상담하십시오 이해력을 이해합니다 W3C의 일반적인 HTTP 구현 문제. URI를 설계 할 때 일반적인 함정 목록이 있습니다. 또 다른 좋은 자원입니다 Resourceful vs Hackable Search URL.

다른 팁

질문을보고 싶을 수도 있습니다. "친절한 URL 체계?".

특히, Larry.smithmier의 답변 ASP.NET에서 MVC를 사용할 때 공통 URL 체계 목록이 제공되었습니다.

또한 다른 동사를 사용하여 다른 동작을 위해 동일한 경로를 재사용하는 것을 고려할 수 있습니다. 예를 들어, "Products/Edit/45"에 대한 GET 요청은 제품 편집기를 표시하는 반면 동일한 URL에 대한 게시물은 제품을 업데이트합니다. acceptverb 속성을 사용하여이를 달성 할 수 있습니다.

[AcceptVerb("GET")]
public ActionResult Edit(int id)
{
    ViewData["Product"] = _products.Get(id);
    return View();
}

[AcceptVerb("POST")]
public ActionResult Edit(int id, string title, string description)
{
    _products.Update(id, title, description);
    TempData["Message"] = "Changes saved successfully!";

    return RedirectToAction("Edit", new { id });
}

Bill de Hóra는 제목의 아주 좋은 에세이를 썼습니다 프레임 워크의 웹 리소스 매핑 기준 그것은 읽을 가치가 있습니다.

Troethom의 의견에 추가하려면 Restful은 일반적으로 새 사용자를 만들려면 /사용자 /newusername을 표현할 수 있음을 의미합니다.

RESTFUL은 기본적으로 컨텐츠 제어/액세스를 위해 5 개의 표준 HTTP 방법 (Get, Put, Post, Delete, Head)을 사용합니다.

좋아, 웹 브라우저에서는 쉽지 않지만 항상 과부하 된 게시물 (사용자를 표현한 /사용자 /사용자 이름을 사용하여 세부 정보 등을 변경할 수 있습니다. 세부 사항 등을 변경할 수 있습니다.

좋은 일을하는 좋은 방법, 나는 읽는 것을 권장합니다. 편안한 웹 서비스 더 나은 이해를 얻으려면 : D (그리고 그것은 좋은 책입니다!)

이 주제에 접근하는 두 가지 주요 방법을 보았습니다 ...

하나는 다음에 설명되어 있습니다 MVCContrib 프로젝트 문서

다른 하나는 a에 설명되어 있습니다 Stephen Walther의 블로그 게시물 (내가 개인적으로 선호하는).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top