IT박스

Request [ "key"] 대 Request.Params [ "key"] 대 Request.QueryString [ "key"]

itboxs 2020. 11. 1. 17:26

Request [ "key"] 대 Request.Params [ "key"] 대 Request.QueryString [ "key"]


Request["key"]Request.Params["key"]Request.QueryString["key"]

노련한 프로그래머는 어떤 방법을 사용합니까? 그리고 왜?


나는 추천한다 Request.QueryString["key"]. 차이가 많이에 없다 Request["Key"]쿼리 문자열에 대한하지만 당신은에서 값을 얻으려고 노력하는 경우 큰 (어) 차이가있다 ServerVariables. null 인 경우 Request["Key"]에서 값을 QueryString찾고 Form, Cookie그리고 마지막으로 ServerVariables.

사용 Params은 가장 비용이 많이 듭니다. PARAMS 내지 제 요구가 새롭게 생성 NameValueCollection하고, 각각의 추가 QueryString, Form, CookieServerVariables이 컬렉션. 두 번째 요청의 경우 Request["Key"].

두 개의 키에 대한 성능 차이는 상당히 미미합니다. 여기서 핵심은 코드가 의도를 보여야하고 사용 Request.QueryString은 의도가 무엇인지 명확하게한다는 것입니다.


Request.QueryString["key"]코드 리더 가 데이터를 어디에서 가져 오는지 정확히 있기 때문에 사용하는 것을 선호합니다 . Request.Params["key"]쿠키, 쿼리 문자열 및 기타 몇 가지를 참조 할 수 있기 때문에 사용하지 않는 경향이 있습니다 . 그래서 사용자는 조금 생각해야합니다. 누군가가 당신의 생각을 파악하는 데 필요한 시간이 적을수록 코드를 유지하는 것이 더 쉬워집니다.


HttpRequest.Params또는 Request.Paramshttprequest에서 거의 모든 것 (쿼리 스트링, 양식, 쿠키 및 세션 변수)을 가져 오지만 Request.Querystring쿼리 스트링 만 가져옵니다. 모두 그 당시 수행중인 작업에 따라 다릅니다.


나는 항상 컬렉션을 명시 적으로 지정합니다. 어떤 이유로 재정의를 허용하려면 각 항목에 대해 "get"을 코딩하고 하나를 선택하는 계층 구조를 보여주는 명확한 코드를 작성하십시오. IMO, 명확한 비즈니스 이유없이 여러 출처에서 가치를 얻는 것을 싫어합니다.


web.config에서 requestValidationMode = "4.5" 를 설정 하면 Request.QueryString [ "key"]Request [ "key"] 모두 "lazy loading"동작을 설계로 사용합니다.

그러나 어떻게 든 Request.Params [ "key"] 는 4.0 동작으로 유효성 검사를 트리거합니다.

이 이상한 행동은 정말 오랫동안 나를 혼란스럽게합니다.

참고 URL : https://stackoverflow.com/questions/2312855/requestkey-vs-request-paramskey-vs-request-querystringkey