一个基本的HTTP服务客户端:Demands

jopen 9年前

一个基本的HTTP服务客户端。

By default it "demands" successful responses from API endpoints, otherwise it raises an exception.

Demands accepts all the same parameters asrequests.requestand extends therequests.Sessionclass, documentation for both: Requests Developer Interface.

Written and used by the folks at Yola to support our free website builder.

HTTPServiceClient Overview

  • base class for creating service clients
  • provides flexible way of http error handling for descendants
  • HTTPServiceErrorraised on unexpected service response

  • Supports pre-send and post-send hooks

Usage
from demands import HTTPServiceClient    class MyService(HTTPServiceClient):      def get_user(self, user_id):          return self.get('/users/%s/' % user_id).json()        def safe_get_user(self, user_id, default_user):          response = self.get(              '/users/%s/' % user_id,               expected_response_codes=[404])          return response.json() if response.is_ok else default_user      service = MyService(url='http://localhost/')  user = service.get_user(1234)

Any parameters passed to the constructor will also be used for each and every request:

service = MyService(      url='http://localhost/',      headers={'h1':'value'},      auth=('username','pass'),  )    # sent with auth and both headers  user = service.get('/some-path', headers={'h2': 'kittens'})

项目主页:http://www.open-open.com/lib/view/home/1427942573928