操作
使用cURL与REST API交互¶
curl 是一个用于通过多种协议传输数据的命令行工具。它可以用来与Redmine REST API交互。
使用JSON¶
以下是一个更新问题的简单命令示例
curl -v -H "Content-Type: application/json" -X PUT --data-binary "@388.json" -u login:password http://redmine/issues/388.json curl -v -H "Content-Type: application/json" -X PUT --data-binary "@388.json" -H "X-Redmine-API-Key: xxxx" http://redmine/issues/388.json
包含发送给Redmine的数据的文件(如上例中的388.json)看起来像这样
{
"issue": {
"subject": "subject123",
"notes": "Changing the subject"
}
}
注意:需要根据您发送的数据格式设置 Content-Type
头。它必须设置为以下值之一application/json
application/xml
使用XML¶
以下是一个创建带有自定义字段的问题的简单命令示例
curl -v -H "Content-Type: application/xml" -X POST --data-binary "@issue.xml" -u login:password http://redmine/issues.xml curl -v -H "Content-Type: application/xml" -X POST --data-binary "@issue.xml" -H "X-Redmine-API-Key: xxxx" http://redmine/issues.xml
其中issue.xml内容为
<?xml version="1.0" encoding="ISO-8859-1" ?>
<issue>
<subject>API custom fields</subject>
<project_id>1</project_id>
<tracker_id>2</tracker_id>
<custom_fields type="array">
<custom_field>
<id>2</id>
<value>Fixed</value>
</custom_field>
<custom_field>
<id>1</id>
<value>0.8.2</value>
</custom_field>
</custom_fields>
</issue>
文本格式化¶
如果您想使用一些文本格式化(例如更新项目中的Wiki页面),请确保使用curl的选项 --data-binary
而不是 --data
来加载文件。只有这样,curl才会发送不变的换行符并保留所有格式。
curl -v -H "Content-Type: application/xml" -X PUT --data-binary "@wiki.xml" -u login:password http://redmine/projects/foo/wiki/page_test.xml
其中wiki.xml内容为
<?xml version="1.0"?>
<wiki_page>
<text>
h1. TITLE
%{font-size:14pt}SUBTITLE%
</text>
</wiki_page>
附加文件¶
如果您想创建一个包含image.png的附件的问题,您需要首先上传此文件
curl --data-binary "@image.png" -H "Content-Type: application/octet-stream" -X POST -u login:password http://redmine/uploads.xml?filename=image.png # 201 response <upload> <token>7167.ed1ccdb093229ca1bd0b043618d88743</token> </upload>
然后,使用令牌创建问题
curl -v -H "Content-Type: application/xml" -X POST --data-binary "@issue.xml" -u login:password http://redmine/issues.xml
其中issue.xml内容为
<?xml version="1.0" encoding="ISO-8859-1" ?>
<issue>
<subject>Issue with attachment</subject>
<project_id>1</project_id>
<uploads type="array">
<upload>
<token>7167.ed1ccdb093229ca1bd0b043618d88743</token>
<filename>image.png</filename>
<content_type>image/png</content_type>
</upload>
</uploads>
</issue>