wordpress和woomerce restapi的python包装器,支持oauth1a 3leg
wordpress-api的Python项目详细描述
wordpress api-python客户端图片::https://travis-ci.org/derwentx/wp-api-python.svg?branch=master
:目标:https://travis ci.org/derwentx/wp-api-python
…图片::https://api.codeculate.com/v1/badges/4df627621037b2df7e5d/可维护性
:目标:https://codeculate.com/github/derwentx/wp-api-python/可维护性
:alt:可维护性
。图片::https://api.codeculate.com/v1/badges/4df627621037b2df7e5d/test廑coverage
:目标:https://codeculate.com/github/derwentx/wp api python/test廑coverage
:alt:test coverage
。图片::https://snyk.io/test/github/derwentx/wp-api-python/badge.svg?targetfile=requirements.txt
:目标:https://snyk.io/test/github/derwentx/wp-api-python?targetfile=requirements.txt
wordpress和woomerce rest api的python包装,支持oauth1a 3leg。
支持wordpress rest api v1-2、woomerce rest api v1-3和woomerce wp-api v1-2(自动oauth3a处理)。
由Claudio Sanches编写并修改为与WordPress一起使用的RCE API:https://github.com/woomerce/wc-api-python
我创建了这个fork,因为与现有的Python客户端https://pypi.python相比,我更喜欢wc-api-python客户端与WordPress-api接口的方式。org/pypi/wordpress_json
不支持oauth身份验证,只支持基本身份验证(非常不安全)
欢迎对如何使用api和如何改进此存储库提出任何意见:)。
您可以在我的github配置文件中找到我的联系信息。
路线图
----
-[x]创建初始fork
-[x]在WordPress客户端上实现3条腿的OAuth
-[x]更好地本地存储OAuth凭据,以停止生成不必要的API密钥
-[x]支持将图像上载到WC API
-[]更好地处理超时后退
-[]实现迭代器以方便访问api项
允许在您的wordpress站点上安装插件:
-**wp rest api**(仅wp<;v4.7需要,建议版本:2.0+)
-**wp rest api-oauth 1.0a server**(可选,如果您希望oauth在wordpress api中。https://github.com/wp-api/oauth1)
-**wp rest api-meta endpoints**(可选)
-**woomerce**(可选,如果您想使用woomerce api)
————————————————————————————————————————————————————————————————代码块::bash
下载此repo并使用setuptools安装包
…代码块::bash
pip install setuptools
git clone https://github.com/derwentx/wp api python
python setup.py install
testing
----
有些测试对停靠的woomerce容器进行api调用。别担心!设置起来真的很简单。你只需要安装Docker并运行
…代码块:bash
docker compose up-d
代码块::bash
pip install-r requirements test.txt
python setup.py test
publishing
----
代码块::bash
python setup.py sdist bdist\u wheel
changelog
tween upload dist/wordpress api-$(python setup.py--version)-r pypitest
tween upload dist/wordpress api-$(python setup.py--version)-r pypi
这些说明:http://v2.wp api.org/guide/authentication/
nt)。
将生成的密钥和机密存储在安全的地方。
查看可以在http://v2.wp api.org/reference/
setup
----
wordpress api的基本身份验证:
----br/>(注意:需要基本身份验证n插件)
…代码块::python
/>)
wp rest api v2:
---
(注意:用户名和密码是必需的,以便它可以自动为您填写oauth请求令牌表单。
需要oauth 1.0a插件。)
…代码块::python
="xxxx",
wp_pass="xxxx",
oauth1a_3leg=true,
creds_store="~/.wc api creds.json"
)
Legacy Woomerce API v3:
——
……代码块::python
)
新的wc rest api:
---
注意:oauth1a 3legged可以与wordpress一起工作,但不能与woomerce一起工作。但是oauth1a签名仍然有效。
如果您尝试使用woocommerce进行oauth1a-3leg,它只会说"consumer-key无效",即使它是有效的。
代码块::python
/v2",
callback="http://127.0.0.1/oauth1廑callback'
~~~~~~~~
+———————————————————————————————————————————————————————————————————————————在类型必需描述
+=======================+=============+==========+=================================================================================================+
``url` ` ` ` ` string` `是您的存储URL,例如:http://wp.dev/
+??-+??-+??-+??-+??-+??-??-??-------------------------------------+
``consumer key` ` `` string` ` yes您的API使用者密钥
+---------------------------+——+——+——————+————————————————————————————————————————---———————————------------------------------------------------------------+
``consumer secret``````string````是``your api consumer secret`-----+——+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————``|
+——+——+——+————+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————`` wc-api```
+——+——+——+——+——————————————————————————————————————————————————————————————————————————————————————————`` 5```
+??-+??-+??-+??-+??-??-??-??-
``验证ssl`` ` ` bool``否|连接时验证ssl,需要使用自签名证书进行测试时,将此选项用作"false";
+——————————————————————————————————————————————————————————————————————|``基本身份验证```124;``bool```否``强制基本身份验证,可以通过查询字符串或头(默认值)
+??-+??-+??-+??-+??-+??-??-??--——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-------------------------------------------------------+
``oauth1a_3leg``````` string````否`;使用oauth1a三条腿身份验证`
+--------------------------+---------+--+------------------------------------------------------------+
``creds`存储` ` ` ` ` ` ` `字符串` ` ` `没有存储OAuth验证器的JSON文件(仅与OAuth leg一起使用)
+-----————————————————————————————————————————————————————————————————————————————————————————————————————————————r/>params type
>>+==========+====================================================================================================================================;api端点,例如:``posts``或``user/12``|
+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————---————+
get
~~~
-```.get(endpoint)``
post
~~~
-``.post(端点,数据)`
~
>
`.put(端点,数据)``
delete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在wp api上使用basic auth)
…代码块::python
assert os.path.exists(img_path),"img应该存在"
data=open(img_path,"rb").read()
filename=os.path.basename(img_path)
uextension=os.path.splitext(filename)
headers={
"缓存控制":"无缓存"
"c内容处理':'附件;文件名=%s'%filename,
'内容类型':'图像/%s'%extension
}
endpoint="/media"
返回wpapi.post(endpoint,data,headers=headers)
response
--
所有方法都将返回"response<;http://docs.python requests.org/en/latest/api/requests.response>;``对象。
返回数据的示例:
。代码块::bash
>;>;来自wordpress导入api as wpapi
>;>;r=wpapi.get("posts")
>;>;>;r.status\u code
200
>;>;r.headers['content-type']
'application/json;charset=utf-8'
>;>;r.encoding
"utf-8"
>;>;r.text
u'{"posts":[{"title":"飞行忍者","id":70,…'//json text
>;>;r.json()
{u'posts':[{u'selled乇individual':false,…//dictionary data
有关删除请求的说明。
=
通知如何发出请求,例如"headers"。目前它只将"headers"参数传递给请求,但是如果我看到它的用例,我可以将更多的参数转发给"requests"。
"delete"函数不接受数据对象,因为http delete请求通常没有负载,而且http服务器将拒绝具有有效负载的删除请求。
您仍然可以在url的查询字符串中传递api请求参数。如果要自动删除用户,我建议使用类似于"urlparse"/"urllib.parse"的库来修改查询字符串。
根据[文档](https://developer.wordpress.org/rest api/reference/users/"delete-a-user)删除用户时,需要传递"force"和`将参数重新分配给api,可以通过将参数附加到端点url来完成。
…代码块::python
>>response=wpapi.delete('/users/<;id>;?重新分配=<;其他ID>;&;强制=真')
>;>;response.json()
{"已删除":真,…}
python2中有关编码的说明
===
,请确保只有"post"unicode字符串对象或
已正确编码为utf-8的字符串。python2中包含非utf8
字节字符串的序列化对象由于"json.dumps"中的错误而被从
"future"导入"unicode"文本而中断。您可以通过自己序列化数据来解决这个问题。
——
1.2.8-2018/10/13
~~~~~~~~~~~~~~~~~~~~
-更好的python3支持
-非常好的测试
-添加了用于添加自定义头(如jwt)的noauth选项
1.2.7-2018/06/18 2018/06/2018年
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~br/>~~~~~~~~~~~~~~~~~~~~~~~~
-更好的UTF-8支持
1.2.4-2017/10/01
~~~~~~~~~~~~~~~~~~~~
-支持图像上载
-更精确的WP身份验证方法文档
1.2.3-2017/09/07
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-更好地本地存储OAuth凭据以停止生成不必要的API密钥
-改进API错误的解析以显示更有用的错误信息
1.2.2-2017/06/16
~~~~~~~~~~~~~~~~~~~~~
-支持不带https的基本身份验证
-将oauth模块重命名为auth(因为auth包括oauth和基本auth)
-使用最新版本的wp和wc进行测试
1.2.1-2016/12/13
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-测试以处理诸如filter[limit]
-修复:某些边缘情况下,查询无序会导致signatrue mismatch
-强化了helper和api类,并添加了相应的测试用例
1.2.0-2016/09/28
~~~~~~~~~~~~~~~~~~~~~~
-初始fork
-实现了3条腿的oauth
-使用分页进行测试
:目标:https://travis ci.org/derwentx/wp-api-python
…图片::https://api.codeculate.com/v1/badges/4df627621037b2df7e5d/可维护性
:目标:https://codeculate.com/github/derwentx/wp-api-python/可维护性
:alt:可维护性
。图片::https://api.codeculate.com/v1/badges/4df627621037b2df7e5d/test廑coverage
:目标:https://codeculate.com/github/derwentx/wp api python/test廑coverage
:alt:test coverage
。图片::https://snyk.io/test/github/derwentx/wp-api-python/badge.svg?targetfile=requirements.txt
:目标:https://snyk.io/test/github/derwentx/wp-api-python?targetfile=requirements.txt
wordpress和woomerce rest api的python包装,支持oauth1a 3leg。
支持wordpress rest api v1-2、woomerce rest api v1-3和woomerce wp-api v1-2(自动oauth3a处理)。
由Claudio Sanches编写并修改为与WordPress一起使用的RCE API:https://github.com/woomerce/wc-api-python
我创建了这个fork,因为与现有的Python客户端https://pypi.python相比,我更喜欢wc-api-python客户端与WordPress-api接口的方式。org/pypi/wordpress_json
不支持oauth身份验证,只支持基本身份验证(非常不安全)
欢迎对如何使用api和如何改进此存储库提出任何意见:)。
您可以在我的github配置文件中找到我的联系信息。
路线图
----
-[x]创建初始fork
-[x]在WordPress客户端上实现3条腿的OAuth
-[x]更好地本地存储OAuth凭据,以停止生成不必要的API密钥
-[x]支持将图像上载到WC API
-[]更好地处理超时后退
-[]实现迭代器以方便访问api项
允许在您的wordpress站点上安装插件:
-**wp rest api**(仅wp<;v4.7需要,建议版本:2.0+)
-**wp rest api-oauth 1.0a server**(可选,如果您希望oauth在wordpress api中。https://github.com/wp-api/oauth1)
-**wp rest api-meta endpoints**(可选)
-**woomerce**(可选,如果您想使用woomerce api)
————————————————————————————————————————————————————————————————代码块::bash
下载此repo并使用setuptools安装包
…代码块::bash
pip install setuptools
git clone https://github.com/derwentx/wp api python
python setup.py install
testing
----
有些测试对停靠的woomerce容器进行api调用。别担心!设置起来真的很简单。你只需要安装Docker并运行
…代码块:bash
docker compose up-d
代码块::bash
pip install-r requirements test.txt
python setup.py test
publishing
----
代码块::bash
python setup.py sdist bdist\u wheel
changelog
tween upload dist/wordpress api-$(python setup.py--version)-r pypitest
tween upload dist/wordpress api-$(python setup.py--version)-r pypi
这些说明:http://v2.wp api.org/guide/authentication/
nt)。
将生成的密钥和机密存储在安全的地方。
查看可以在http://v2.wp api.org/reference/
setup
----
wordpress api的基本身份验证:
----br/>(注意:需要基本身份验证n插件)
…代码块::python
/>)
wp rest api v2:
---
(注意:用户名和密码是必需的,以便它可以自动为您填写oauth请求令牌表单。
需要oauth 1.0a插件。)
…代码块::python
="xxxx",
wp_pass="xxxx",
oauth1a_3leg=true,
creds_store="~/.wc api creds.json"
)
Legacy Woomerce API v3:
——
……代码块::python
)
新的wc rest api:
---
注意:oauth1a 3legged可以与wordpress一起工作,但不能与woomerce一起工作。但是oauth1a签名仍然有效。
如果您尝试使用woocommerce进行oauth1a-3leg,它只会说"consumer-key无效",即使它是有效的。
代码块::python
/v2",
callback="http://127.0.0.1/oauth1廑callback'
~~~~~~~~
+———————————————————————————————————————————————————————————————————————————在类型必需描述
+=======================+=============+==========+=================================================================================================+
``url` ` ` ` ` string` `是您的存储URL,例如:http://wp.dev/
+??-+??-+??-+??-+??-+??-??-??-------------------------------------+
``consumer key` ` `` string` ` yes您的API使用者密钥
+---------------------------+——+——+——————+————————————————————————————————————————---———————————------------------------------------------------------------+
``consumer secret``````string````是``your api consumer secret`-----+——+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————``|
+——+——+——+————+————————————————————————————————————————————————————————————————————————————————————————————————————————————————————`` wc-api```
+——+——+——+——+——————————————————————————————————————————————————————————————————————————————————————————`` 5```
+??-+??-+??-+??-+??-??-??-??-
``验证ssl`` ` ` bool``否|连接时验证ssl,需要使用自签名证书进行测试时,将此选项用作"false";
+——————————————————————————————————————————————————————————————————————|``基本身份验证```124;``bool```否``强制基本身份验证,可以通过查询字符串或头(默认值)
+??-+??-+??-+??-+??-+??-??-??--——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————-------------------------------------------------------+
``oauth1a_3leg``````` string````否`;使用oauth1a三条腿身份验证`
+--------------------------+---------+--+------------------------------------------------------------+
``creds`存储` ` ` ` ` ` ` `字符串` ` ` `没有存储OAuth验证器的JSON文件(仅与OAuth leg一起使用)
+-----————————————————————————————————————————————————————————————————————————————————————————————————————————————r/>params type
>>+==========+====================================================================================================================================;api端点,例如:``posts``或``user/12``|
+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————---————+
get
~~~
-```.get(endpoint)``
post
~~~
-``.post(端点,数据)`
~
>
`.put(端点,数据)``
delete
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~在wp api上使用basic auth)
…代码块::python
assert os.path.exists(img_path),"img应该存在"
data=open(img_path,"rb").read()
filename=os.path.basename(img_path)
uextension=os.path.splitext(filename)
headers={
"缓存控制":"无缓存"
"c内容处理':'附件;文件名=%s'%filename,
'内容类型':'图像/%s'%extension
}
endpoint="/media"
返回wpapi.post(endpoint,data,headers=headers)
response
--
所有方法都将返回"response<;http://docs.python requests.org/en/latest/api/requests.response>;``对象。
返回数据的示例:
。代码块::bash
>;>;来自wordpress导入api as wpapi
>;>;r=wpapi.get("posts")
>;>;>;r.status\u code
200
>;>;r.headers['content-type']
'application/json;charset=utf-8'
>;>;r.encoding
"utf-8"
>;>;r.text
u'{"posts":[{"title":"飞行忍者","id":70,…'//json text
>;>;r.json()
{u'posts':[{u'selled乇individual':false,…//dictionary data
有关删除请求的说明。
=
通知如何发出请求,例如"headers"。目前它只将"headers"参数传递给请求,但是如果我看到它的用例,我可以将更多的参数转发给"requests"。
"delete"函数不接受数据对象,因为http delete请求通常没有负载,而且http服务器将拒绝具有有效负载的删除请求。
您仍然可以在url的查询字符串中传递api请求参数。如果要自动删除用户,我建议使用类似于"urlparse"/"urllib.parse"的库来修改查询字符串。
根据[文档](https://developer.wordpress.org/rest api/reference/users/"delete-a-user)删除用户时,需要传递"force"和`将参数重新分配给api,可以通过将参数附加到端点url来完成。
…代码块::python
>>response=wpapi.delete('/users/<;id>;?重新分配=<;其他ID>;&;强制=真')
>;>;response.json()
{"已删除":真,…}
python2中有关编码的说明
===
,请确保只有"post"unicode字符串对象或
已正确编码为utf-8的字符串。python2中包含非utf8
字节字符串的序列化对象由于"json.dumps"中的错误而被从
"future"导入"unicode"文本而中断。您可以通过自己序列化数据来解决这个问题。
1.2.8-2018/10/13
~~~~~~~~~~~~~~~~~~~~
-更好的python3支持
-非常好的测试
-添加了用于添加自定义头(如jwt)的noauth选项
1.2.7-2018/06/18 2018/06/2018年
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~br/>~~~~~~~~~~~~~~~~~~~~~~~~
-更好的UTF-8支持
1.2.4-2017/10/01
~~~~~~~~~~~~~~~~~~~~
-支持图像上载
-更精确的WP身份验证方法文档
1.2.3-2017/09/07
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-更好地本地存储OAuth凭据以停止生成不必要的API密钥
-改进API错误的解析以显示更有用的错误信息
1.2.2-2017/06/16
~~~~~~~~~~~~~~~~~~~~~
-支持不带https的基本身份验证
-将oauth模块重命名为auth(因为auth包括oauth和基本auth)
-使用最新版本的wp和wc进行测试
1.2.1-2016/12/13
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-测试以处理诸如filter[limit]
-修复:某些边缘情况下,查询无序会导致signatrue mismatch
-强化了helper和api类,并添加了相应的测试用例
1.2.0-2016/09/28
~~~~~~~~~~~~~~~~~~~~~~
-初始fork
-实现了3条腿的oauth
-使用分页进行测试