将python应用程序与bigcommerce api连接

bigcommerce-v3的Python项目详细描述


包装在bigcommerce库上,以支持bigcommerce v3 api。

使用pip install bigcommerce_v3easy_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.BigcommerceApibigcommerce_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支持

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JAVAutil。整数java的扫描器键盘输入   java通知运行后立即崩溃   java如何在一个只能由类修改而不能由其实例修改的类中生成静态变量?   数据库Java字段猜测   返回值周围的java括号为什么?   java Android更新通讯录中的联系人   一个消费者正在读取数据   java是否可以通过编程方式为蓝牙配对设置pin?   java Spring引导和buildResponseEntity()   java为什么序列化可以在没有实现可序列化的情况下工作   Java同步无助于相互排斥   twitter Java Twitter4J未在推文下显示源标签   为什么Javasocket不支持中断处理?