2011-01-01 1 views
3

피스톤에 API가 내장 된 장고 앱을 만들고 있습니다. 모든 것을 DRY로 유지하고 API를 완벽하게 유지하기 위해 내부 애플리케이션이 모델이 아닌 API를 호출하기를 원합니다. (프록시 뷰 컨트롤러의 종류는 https://github.com/raganwald/homoiconic/blob/master/2010/10/vc_without_m.md입니다.하지만 지금은 한 장의 장고에 모두 설치하십시오.).Django 테스트 클라이언트를 프로덕션에서 API 호출에 사용할 수 있습니까?

Model -> API -> Application -> User Client 

내가 응용 프로그램에 대한 내부 클라이언트 인터페이스를 만드는 몇 가지 핵심 피스톤 클래스를 오버로드 할 수 있지만, 난 그냥 같은 일을 달성하기 위해 장고 테스트 클라이언트를 사용할 수 있는지 궁금 해요 : 그래서 기본 설정입니다. 따라서 모델을 호출하는 대신 기사를 작성하려면 다음을 실행하십시오.

from django.test.client import Client 
c = Client() 
article = c.post('/api/articles', { 
    'title' : 'My Title', 
    'content' : 'My Content' 
}) 

이렇게하려면 테스트 클라이언트를 사용하지 않아야하는 이유가 있습니까? (예를 들어, 성능)이 특정 목적에 맞게 더 나은 도구가 있습니까?

+0

흥미로운 접근법. [resolve] (http://docs.djangoproject.com/en/dev/topics/http/urls/#resolve)를 사용하고 반환 된 뷰를 직접 호출하여 오버 헤드가 낮은 클라이언트를 만들 수 있습니다. 테스트 클라이언트는 테스트 관련 정보를 저장하여 오버 헤드가 많을 수 있습니다. –

답변

6

TestClient 코드를 검토 한 후 테스트와 관련하여 추가 오버 헤드가없는 것으로 보입니다. 오히려 내부 요청에 대한 기본 클라이언트로 작동합니다. 테스트 클라이언트를 내부 클라이언트로 사용하고 Piston의 DjangoEmitter를 사용하여 모델 오브젝트를 API에서 다시 가져올 것입니다.

테스트 만 내부 요청 메커니즘이 성능 저하에 지나치지 여부를 알 수 있습니다.

+0

좋은 결과, 계속해서 결과를 게시합니다. –

+0

이 기능을 사용 했습니까? – obeattie

+0

예, 실제로 실제로 잘 작동했습니다. 응용 프로그램은 많은 트래픽을 얻지 못하므로 어떻게 확장 될지 잘 모르겠습니다. – Travis