2012-05-06 2 views
2

다른 사람들이 사용할 수 있도록 API를 구축 중입니다. 이것은 사용자가 일부 데이터로 전달하는 간단한 Json 요청이며 일부는 되돌려 보냅니다.api를 서비스로 구축하기

내가 좋아할만한 점은 API를 보호하고 사용자를 켜고 끌 수있는 일종의 사용자 시스템이 있으며 각 사용자가 얼마나 많은 요청을하는지 기록 할 수 있습니다.

레일스에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 나는 그것이 요청을 늦추 길 원치 않는다. 어쩌면 궁리를 사용하여 그것을하는 방법을 볼 수 있지만 다른 사람들의 의견을 듣는 것이 좋을 것입니다.

덕분에

답변

0

나는 유증의 토큰 인증 기능 (https://github.com/plataformatec/devise 참조)를 사용하기 전에이 작업을 완료했습니다.

  • 는 각 API의 사용자에 대한 사용자 계정을 만듭니다

    나는 다음과 같은 설정이 작동 발견했다.
  • 토큰 인증을위한 장치 구성
  • 각 요청과 함께 토큰을 과 함께 제출하도록 토큰 인증 구성을 설정합니다.

이렇게하면 개별 사용자를 사용하거나 사용하지 않도록 설정하고 모든 요청을 호출 한 API 사용자에게 추적 할 수 있습니다.

추적 사용에 관심이있는 경우 모든 API 요청을 추적하는 데이터베이스 테이블을 만들 수도 있습니다. 다른 사용자의 모든 요청 (예 : @user.api_requests)을 쉽게 찾을 수 있도록 belong_to 사용자 테이블을 설정할 수 있습니다.

것이다 사용자가 모든 요청의 수 :

@user.api_requests.count 

# or use a where clause to find how many of each type 
@user.api_requests.where("api_request_type = ?", 'SomeAPICallType').count 

마지막으로 참고 - 내가 최근에 API를 구축하기위한 포도 라이브러리를 사용했다. 나는 그것이 꽤 잘되었다고 생각했고 그것은 우리의 필요를 위해 아주 잘 작동했습니다. 특히 버전 API에 제공되는 기능이 마음에 듭니다. 세부 사항은 다음과 같습니다 : https://github.com/intridea/grape/wiki

+0

감사합니다. 오버 헤드가 조금 걱정됩니다. 백그라운드 작업에 로그인하는 것이 도움이 될 수 있습니까? –

+0

나는 먼저 그것을 달릴 것이고, 그 후에 아마 당신이 말하는 것처럼 일을 끝내게 될 것이다. 나는 작업 처리를 위해 resque를 사용할 것 같다. –

+0

감사합니다! 나는 이것을 줄 것이다! –

1

또 다른 방법은 3scale (http://www.3scale.net)을 사용하는 것입니다 - 트래픽 제한은 무료이지만 모든 키 관리, 사용자, 문서 등을 처리하며 루비가 있습니다 레일을 사용하고 있다면 코드에 넣을 수있는 라이브러리. (다른 라이브러리는 여기에 있습니다 : https://support.3scale.net/libraries).

관련 문제