项目

常规

个人资料

操作

使用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>

由Toshi MARUYAMA更新 几乎5年前 · 10次修订