将python应用程序与bigcommerce api连接
bigcommerce-v3的Python项目详细描述
包装在bigcommerce库上,以支持bigcommerce v3 api。
使用pip install bigcommerce_v3或easy_install bigcommerce_v3安装。测试用 Python2.7、3.4、3.5、3.6和3.7。
用法
连接
importbigcommerce_v3# Public apps (OAuth)# Access_token is optional, if you don't have one you can use oauth_fetch_token (see below)api=bigcommerce_v3.api.BigcommerceApi(client_id='',store_hash='',access_token='')# Private apps (Basic Auth)api=bigcommerce_v3.api.BigcommerceApi(host='store.mybigcommerce.com',basic_auth=('username','api token'))
BigcommerceApi还提供了两个用于连接OAuth2的帮助器方法:
- api.oauth_fetch_token(client_secret, code, context, scope, redirect_uri) –获取并返回应用程序的访问令牌。作为一个 副作用,将api配置为随时可用。
- BigcommerceApi.oauth_verify_payload(signed_payload, client_secret) –从已签名的有效负载返回用户数据。
访问和对象
api对象提供对每个api资源的访问,每个api资源 根据资源的功能提供CRUD操作:
api.Products.all()# GET /catalog/products (returns only a single page of products as a list)api.Products.iterall()# GET /catalog/products (autopaging generator that yields all# products from all pages product by product.)api.Products.get(1)# GET /catalog/products/1api.Products.create(name='',type='',...)# POST /catalog/productsapi.Products.get(1).update(price='199.90')# PUT /catalog/products/1api.Products.delete_all()# DELETE /catalog/productsapi.Products.get(1).delete()# DELETE /catalog/products/1
客户端提供对子资源的完全访问,两者都是独立的 资源:
api.ProductOptions.get(1, 2) # GET /catalog/products/1/options/2
作为父资源上的帮助方法:
api.Products.get(1).variants() # GET /catalog/products/1/variants api.Products.get(1).variants(1) # GET /catalog/products/1/variants/1
这些子资源实现crud方法的方式与 经常资源:
api.Products.get(1).variants(1).delete()
过滤器
过滤器可以作为关键字参数应用于all方法:
customer=api.Customers.all(first_name='John',last_name='Smith')[0]orders=api.Orders.all(customer_id=customer.id)
错误处理
数据的最小验证由客户端执行,而不是延迟 这是给服务器的。如果出现任何异常情况,将筹集HttpException。 状态代码:
- 3xx状态码:RedirectionException
- 4xx状态码:ClientRequestException
低水平api
由bigcommerce_v3.api.BigcommerceApi提供的高级api是 在bigcommerce_v3.connection中包装较低级别的api。这个罐头 通过api.connection访问,并为 获取/发布/放置/删除操作。
管理OAuth速率限制
您可以选择将rate_limiting_management对象传递到bigcommerce_v3.api.BigcommerceApi或bigcommerce_v3.connection.OAuthConnection,以进行自动速率限制管理,例如:
importbigcommerce_v3api=bigcommerce_v3.api.BigcommerceApi(client_id='',store_hash='',access_token=''rate_limiting_management={'min_requests_remaining':2,'wait':True,'callback_function':None})
min_requests_remaining将确定将调用管理功能的速率限制窗口中剩余的请求数
wait决定我们是否应该自动睡眠直到窗口结束
callback_function是一个在启动速率限制管理函数时运行的函数。如果启用,它将在等待后被调用。
callback_args是一个可选参数,它是作为参数传递给回调函数的字典。
对于以串行方式运行api请求的简单应用程序(并且不与许多不同的存储交互,或者为每个存储使用单独的工作线程),简单的sleep函数对于大多数目的来说都可以很好地工作。对于可能在给定存储上并行api请求的更复杂的应用程序,建议您编写自己的回调函数来处理速率限制,使用比并发性高的min_requests_remaining,而不要使用默认的等待函数。
其他文档
bigcommerce上提供了api的完整文档 Developer Portal
待办事项
目前只支持目录api。
- 添加价目表API、订户API、脚本API、主题API、BigCommerce Widgets API、订单、交易API、支付API支持