2013-09-25 1 views
1

나는 Devise를 인증에 사용하는 Rails 4 기반 API를 가지고 있으며 각 API 호출을 인증하기 위해 user_tokenuser_email이 필요합니다. 보낸 자격 증명은 해당 시점에 앱을 사용하는 사용자를 기반으로합니다.Spin.js의 Ajax 통합을 사용하여 각 API 호출에 추가 매개 변수를 전달할 수 있습니까?

프론트 엔드에 Spine.js를 사용하고 있으며 클라이언트 쪽에서 수행 한 각 AJAX 호출에 이러한 추가 매개 변수를 포함시키는 것이 가장 좋은 방법에 대한 조언을 듣고 싶습니다.

은 척추 내, 내가.

사용자가 로그인이 접근 방식의 몇 내 마음을 교차 때 내 API에 의해 반환에 필요한 세부 사항 (로컬 스토리지에) 지속되는 세션 모델을 가지고 ...

@url 속성을 통해,하지만 난

class User extends Spine.Model 
    @configure 'User', 'name', 'email', 'image_url' 
    @extend Spine.Model.Ajax 

    @url: '#{Spine.model.host}/users/?user_token=foo&user_email=bar' 

이 ... 어쩌면 더 적절한 방법이 @url 방법을 확장하는 기본 모델을 생성하는 것입니다 ...과 같이, 각 모델에서 작동이를 수정해야 할 것 및 이 매개 변수를 각각 t에 추가합니다. 예. 내 다른 모델은 각각이 기본 모델에서 상속받을 수 있습니다.

마찬가지로 API 호출이 발생할 때마다 이러한 추가 매개 변수를 추가하는 데 사용하는 모델 함수를 각각 확장 할 수 있습니다. 예를 들어, 나는 @fetch() 함수를 확장 할 수 있습니다. 이런 식으로 뭔가 ...

class User extends Spine.Model 
    @configure 'User', 'name', 'email', 'image_url' 
    @extend Spine.Model.Ajax 

    @fetch (params) -> 
    params or= 
     data: {user_token: 'foo', user_email: 'bar'} 
     processData: true 

    super(params) 

또는 제 3 생각 나는 완전히 그래서 어떤을 연장 할 필요가 없습니다, 각각의 API 호출의 끝에 내 추가 PARAMS를 추가 Spine.Model.Ajax을 확장 떨어져 모델에서 그것을 추출 할 수 있는지이었다 모델 함수 중 하나만 사용하거나 심지어는 @url 속성을 사용하는 것이 좋습니다. 기본적으로이 함수는 필요한 추가 자격 증명을 제외하고는 어떻게 작동합니까?

또는 내 접근 방식이 완전히 잘못되었을 수 있으며 훨씬 간단한 것을 간과 할 수 있습니다 (희망 사항).

면책 조항 : 위의 코드 중 하나라도 테스트하지 않았으며 생각 프로세스 중에 메모를했습니다.

(당분간 DEV에서) 내 HTTP 호출 중 하나의 예는 다음과 같습니다 http://dev.myapp.com:5000/api/v1/posts?user_token=foobar&[email protected]

+0

올바르게 이해한다면 AJAX 호출을 할 때 백엔드에 전달할 추가 매개 변수를 추가하고 싶습니까? http 호출의 예를 들려 줄 수 있습니까? 세 번째 아이디어는 아마도 가장 단순하고 가장 쉬울 것입니다. 뷰 코드에 params를 추가하는 것은 확실히 쉽습니다. – Beartech

+0

@Beartech 예, 맞습니다.이 두 개의 추가 매개 변수를 사용하여 모든 통화를 추가하면됩니다. 필자는 모든 클래스에 대해 사용자 정의 함수를 작성하지 않고도 Spine을 사용하는 가장 좋은 방법에 대해 조언 한 직후입니다. 가능한 한 많이 Model API에서 제공되는 프레임 워크 함수를 사용하고 싶습니다. [http://spinejs.com/api/models](http://spinejs.com/api/models) – Pete

답변

1

내가 일전에 우연히 JQuery와 $.ajaxSetup() 기능을 사용하여이 문제를 접근했습니다. 내 코드는 그래서 다음과 같습니다가 즉시 세션이 로컬 저장소에 저장되어있는로 호출 그래서

settings = 
     data: 
      user_email:'[email protected]' 
      user_token:'foobar' 

$.ajaxSetup settings 

나는 척추 내 세션 모델의 '생성'이벤트에이를 구속했다. 그런 식으로 진행하는 AJAX 호출에는 모두 보내야하는 추가 데이터 매개 변수가 추가됩니다.

관련 문제