将python应用程序与bigcommerce api连接

bigcommerce的Python项目详细描述


Build StatusPackage Version

用于与bigcommerce v2 api通信的requests库的包装器。

使用pip install bigcommerceeasy_install bigcommerce安装。测试用 python 2.7.7+和3.4,只需要requestspyjwt

用法

连接

importbigcommerce# Public apps (OAuth)# Access_token is optional, if you don't have one you can use oauth_fetch_token (see below)api=bigcommerce.api.BigcommerceApi(client_id='',store_hash='',access_token='')# Private apps (Basic Auth)api=bigcommerce.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 /products (returns only a single page of products as a list)api.Products.iterall()# GET /products (autopaging generator that yields all#                  products from all pages product by product.)api.Products.get(1)# GET /products/1api.Products.create(name='',type='',...)# POST /productsapi.Products.get(1).update(price='199.90')# PUT /products/1api.Products.delete_all()# DELETE /productsapi.Products.get(1).delete()# DELETE /products/1api.Products.count()# GET /products/count

客户端提供对子资源的完全访问,两者都是独立的 资源:

api.ProductOptions.get(1)                  # GET /products/1/options
api.ProductOptions.get(1, 2)               # GET /products/1/options/2

作为父资源上的帮助方法:

api.Products.get(1).options()              # GET /products/1/options
api.Products.get(1).options(1)             # GET /products/1/options/1

这些子资源实现crud方法的方式与 经常资源:

api.Products.get(1).options(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
  • 5xx状态码:ServerException

低水平api

bigcommerce.api.BigcommerceApi提供的高级api是 在bigcommerce.connection中包装较低级别的api。这个罐头 通过api.connection访问,并为 获取/发布/放置/删除操作。

管理OAuth速率限制

您可以选择将rate_limiting_management对象传递到bigcommerce.api.BigcommerceApibigcommerce.connection.OAuthConnection,以进行自动速率限制管理,例如:

importbigcommerceapi=bigcommerce.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

待办事项

  • 自动枚举子资源的多页响应。

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

推荐PyPI第三方库


热门话题
java从服务器中的jsp页面读取参数   java构造函数会话(字符串,int)不可见   在java中计算特定字符,但我的程序只读取单词中的第一个字符   在java中转换为json的Hashmap的Hashmap。当发送到jsp时,我用javascript解析它。但它在javascript中的解析不正确   JavaSpringDataREST并没有保存实体的所有字段   java如何通过inten共享图像   eclipse是Java所需要的。即使已定义,也要运行的类文件   rest MapStruct Java流   java在OpenJDK 11的源代码上运行DocumentationTool   比较两个ArrayList索引时的java IndexOutOfBoundsException   java为什么Spring验证器需要将错误对象传递给应用程序(富客户端)并由其处理?   java Android从sms垃圾邮件文件夹或列表中检索垃圾邮件号码   java从匿名类参数访问类的实例   java MethodHandle与通用非类返回筛选器?   指定队列顺序的java