2013-08-07 2 views
0

검색 기준이있는 웹 페이지가 있습니다.Session 변수 (객체)를 API에 매개 변수로 전달할 수 있습니까?

사용자가 원하는 것을 선택하고 검색 할 키워드를 입력하면 검색 결과를 보여주는 다른 페이지로 리디렉션됩니다.

var ProjectSearchCriteria = (GBLProjectSearchCriteria) Session[GblConstants.SESSION_PROJECT_SEARCH_CRITERIA]; 

API를이 객체를 전달하는 저를위한 방법이 있나요 :

이 세션 객체는 자신의 검색의 모든 정보가 들어? 그래서 같이

:

[HttpGet] 
public List<string> getEpisodes(GBLProjectSearchCriteria psc) 
{ 
    var ProjectSearchResult = new ProjectSearchResultController(); 
    var GBLProjectSearchResultListData = ProjectSearchResult.GetProjectSearchResultList(psc); 
    return (from GBLProjectSearchResult item 
      in GBLProjectSearchResultListData 
      select item.Title).ToList(); 
} 

내가 검색 기준이 대규모이며 아직 내가 API는 38,032,823 매개 변수를 갖고 싶어하지 않는 존재하기 때문에이가하고 싶은 이유.

이것도 가능합니까? 나는 그것을 어떻게 할 것이냐? 어떤 대안?

+1

개체를 API에 전달할 때의 문제점은 무엇입니까? 당신은 단지'getEpisodes (ProjectSearchCriteria)'를하고 당신은 잘해야합니다 ... – Chris

+1

웹 API는 보통'stateless'로 디자인되어야합니다. 그래서 세션 데이터가 없습니다. 게다가, 당신의 메소드 내부의'Session' 변수에 단순히 접근하는 것이 잘못된 것입니까? 또는 웹 API를 호출 한 곳에서만이 변수에 액세스 할 수 있습니까? 이 경우'PUT' 또는'POST' 동사를 사용하여 객체를 요청 내용으로 보낼 때만 복잡한 객체를 API에 전달할 수 있습니다. – user1908061

+0

Badri의 대답으로 충분할 것입니다. 왜 대답으로 표시하지 않으시겠습니까? – dotnetguy

답변

2

웹 API는 URI, 쿼리 문자열 등 또는 요청 본문의 매개 변수를 바인딩합니다. 특히 요청 메시지 외부에서 다른 것을 바인드하려면 사용자 고유의 매개 변수 바인딩을 작성할 수 있습니다. this을 참조하십시오. 블로그 게시물은 IPrincipal 유형의 매개 변수 바인딩을 생성하지만`GBLProjectSearchCriteria '와 비슷한 것을 할 수 있습니다.

0

시도해 보셨습니까?

getEpisodes((GBLProjectSearchCriteria) Session[GblConstants.SESSION_PROJECT_SEARCH_CRITERIA]); 

데이터 유형을 이미 알고 있으며 유형 변환을하고 있기 때문에 왜 var를 사용하고 있습니까?

var ProjectSearchCriteria = (GBLProjectSearchCriteria) .... 

더 이상 이해가되지 않습니까?

GBLProjectSearchCriteria ProjectSearchCriteria = (GBLProjectSearchCriteria) .... 
+1

'var'은 복제물이 무엇인지 분명히 알았을 때 중복을 막기위한 바로 가기처럼 종종 사용됩니다. 선호도의 문제는 실제로 var를 사용할지 여부를 결정하지만 개인적으로는 후자가 읽기가 훨씬 어려워집니다. – Chris

+0

일부 사람들은 코드 이해를 높이기 위해 유형을 강조하지 않으려면 기본적으로 "var"를 사용합니다. http://csharpindepth.com/ViewNote.aspx?NoteID=61 –

+0

developerwjk를 보시면 URL에 ((GBLProjectSearchCriteria) Session [GblConstants.SESSION_PROJECT_SEARCH_CRITERIA]) 넣으시겠습니까? 나는 그것을 시도했다. 그리고 그것은 didnt한다 일. –

관련 문제