2011-06-14 8 views
27

URL에 대한 경로 매개 변수를 사용할 때와 쿼리 매개 변수를 사용해야하는 시점에 대한 경험이 있습니까? pathParams 또는 QueryParams를 사용하는 경우

는 영업 사원

나의 현재의 생각이 당신의 URL이

의 라인을 따라해야한다는 것입니다, 나는 필드 회사 (PK), InvoiceNo (PK), Invoiceline, invoiceValue, noOfLines와 테이블 송장있어 말 회사에 대한 모든 송장을 표시하는 모든 송장

/Invoice/{company} 

를 표시 할

/Invoice/ 

.

/Invoice/{company}/{InvoiceNo} 

만 표시 라인 (23)

특정 송장 및

/Invoice/{company}/{InvoiceNo}?invoiceLineNo=23 

표시가 내가 생각하고 방법은 기본 키 필드는 경로의 일부 및 기타 분야해야한다는하다 당신은 쿼리 매개 변수의 일부입니다.

이 두 가지를 구별하는 합리적인 방법 같습니까?

+0

참고 : http://stackoverflow.com/q/11552248/1725096 –

답변

44

내 개인적인 경험 법칙에 따라 PathParam이 사용자가 요청한 엔터티 유형을 유도합니다.

/Invoices    // all invoices 
/Invoices?after=2011 // a filter on all invoices 

/Invoices/52   // by 52 
/Invoices/52/Items // all items on invoice 52 
/Invoices/52/Items/1 // Item 1 from invoice 52 

/Companies/{company}/Invoices?sort=Date 
/Companies/{company}/Invoices/{invoiceNo} // assuming that the invoice only unq by company? 

Mr Rowe 인용하자면 : 그냥 가레스의 대답에 추가

+3

+1은 검색어 매개 변수를 필터링하여 사용할 수 있음을 제안합니다. – Qwerky

+9

+1 데이터 그룹화를위한 경로 매개 변수, 필터링을위한 쿼리 매개 변수 –

+0

@Gary Nicely summarized –

6

을 필터링 그룹화 데이터, 쿼리 매개 변수에 대한 경로 매개 변수를 선택적 매개 변수는 검색어 매개 변수로 넣어 쉽다. 일반적으로 가장 좋은 옵션은 서버 프레임 워크의 제약입니다. 매개 변수가 쿼리 매개 변수 또는 경로 매개 변수인지 여부에 너무 많은 의미 적 중요성을 시도하고 추측하는 것은 현명하지 않습니다. URI는 클라이언트에게 불투명하다는 것을 기억하십시오.