좋은 프로그래머는 테스트부터 시작합니다. 그러나 적어도 우리는 시험으로 끝날 것입니다. 우리는 우리의 테스트에 대 한 doctest를 사용 합니다. 테스트는 문서/json 예제 코드/test_jsonrpc.txt에 있으며 문서/json 예제 코드/test_jsonrpc.py로 실행할 수 있습니다. 옵션은 콘텐츠 유형을 응용 프로그램/x-www-양식 urlencoded로 설정합니다. 노드가 불만을 제기하는 경우 호출 시작 시 -H «콘텐츠 유형: 응용 프로그램/json»을 배치하여 헤더를 수동으로 설정합니다. JSON-RPC 웹 사이트 http://www.json-rpc.org 불행히도 현재 구식입니다. www.jsonrpc.org, JSON-RPC에 대한 가장 중요한 정보와 사양을 포함하는 로컬 개발 중에 톡스 러너와 파이썬 버전을 사용합니다. 예를 들어, 파이썬 3.6 런 톡스 -e py36을 사용하는 경우. 특정 버전에 대한 기능을 먼저 개발한 다음 지원되는 모든 버전으로 확장하는 것이 더 쉽습니다. «AudioLibrary.GetAlbums»는 이 예제의 방법입니다.

이 경우 걱정할 수 있는 한 가지는 HTTP보다 더 많은 공유 개체가 있다는 것입니다. 즉, HTTP를 통해 모든 헤더와 본문으로 직렬화됩니다. HTTP없이, 우리는 HTTP를 통해 갈 수없는 주위에 물건을 보낼 수 있습니다. 이러한 경우 발생할 수 있지만 응용 프로그램의 공유가 WSGI 환경이기 때문에 대부분 보호됩니다. 우리는 webob을 사용하더라도. 양쪽에 요청 개체, 그것은 동일한 요청 개체, 그리고 모든 상태는 환경에 스튜디오 유지. HTTP를 넘을 수 없는 환경에서 작업을 공유할 수 있습니다. 예를 들어, 우리는 environ[`jsonrpc.request_value`] = dict (…)를 설정하고 simplejson.dumps 및 simplejson.loads를 피할 수 있습니다. 그렇게 할 수 있었고, 그렇게 했다면 라이브러리가 HTTP를 통해 끊어졌더라도 테스트가 작동할 수 있습니다. 그러나 물론 검사는 우리가 그렇게하지 않는 보여줍니다. 약간의 훈련은 영리한 트릭을 재생 저항하는 데 필요한 (또는 다른 당신은 그 트릭을 재생하고 더 많은 테스트를 할 수 있습니다). 일반적으로 잘 작동합니다.

패키지는 전송에 구애받지 않으며, 통합은 프레임 워크에 따라 다릅니다. 예를 들어 Werkzeug와 클라이언트가 있는 서버가 있습니다. 요구 사항 : 파이썬 (2.4로 테스트), 파이썬 – simplejson이 예제는 JSON-RPC를 제시하지만, 이것은 JSON-RPC의 보증이 아닙니다. 사실 나는 JSON-RPC를 좋아하지 않는다. 그것은 불필요 하 게 un-RESTful, 그리고 XML-RPC에 너무 밀접 하 게 모델링. 이 예제에서 –> 서비스(요청)로 전송된 데이터를 나타내고 <–는 서비스에서 들어오는 데이터를 나타냅니다. <–는 종종 클라이언트-서버 컴퓨팅에서 응답이라고 불리지만 JSON-RPC 버전에 따라 요청에 대한 응답을 반드시 의미하지는 않습니다. 이것은 까다롭습니다. 고릴라는 우리에게 적절한 클라이언트 구현을 제공하지 않습니다. 그것은 단지 json rpc 메시지를 인코딩하고 디코딩하는 방법을 제공합니다.

따라서 우리는 HTTP 요청을 스스로 처리해야합니다. 나는 이것이 더러운 코드라는 것을 알고 있지만 필요에 따라 다시 팩터링 할 수 있습니다. 질문, 의견, 제안 등이 있으면 주저하지 말고 메일을 보내주십시오! 당신이 단순히 내 jsonrpc 모듈을 사용하는 경우 그것은 또한 나에게 메모를 남겨 두는 것이 좋을 것입니다. «jsonrpc» 필드 추가: JSON-RPC 1.0과의 호환성 문제를 해결하기 위해 요청(및 응답)에 버전 필드를 추가했습니다. json-rpc는 2.6+, 3.3+, pypy의 여러 파이썬 버전을 지원합니다. 이렇게 하면 라이브러리 테스트 및 선택적 종속성 관리에 어려움이 발생합니다. 예를 들어 버전 3.3 이전의 파이썬은 모의 를 지원하지 않으며 unittest2에 대한 지원이 제한되어 있습니다. 모든 종속성은 소스 코드의 if-then 블록으로 변환되어 복잡성을 추가합니다. 따라서 크로스 파이썬 지원이이 라이브러리의 핵심 기능이지만 교차 장고 또는 교차 플라스크 지원은 제한됩니다.