项目

常规

个人资料

操作

使用Ruby的REST API

Redmine REST API遵循Rails的RESTful约定,因此与ActiveResource一起使用非常简单。

ActiveResource (Rails)

在Redmine 3.x (Rails 4.2)中,您需要添加'activeresource'宝石。
例如,在Gemfile.local

gem 'activeresource'

这里是一个简单的Ruby脚本,演示如何使用Redmine REST API

require 'rubygems'
require 'active_resource'

# Issue model on the client side
class Issue < ActiveResource::Base
  self.site = 'http://redmine.server/'
  self.user = 'foo'
  self.password = 'bar'
  # Or you can use the Redmine-API key
  # self.headers['X-Redmine-API-Key'] = 'baz'
end

if false
  # Retrieving issues
  issues = Issue.find(:all)
  puts issues.first.subject
end

# Retrieving an issue
issue = Issue.find(1)
puts issue.description
puts issue.author.name

# Creating an issue
issue = Issue.new(
  :subject => 'REST API',
  :assigned_to_id => 1,
  :project_id => 1
# custom field with id=2 exist in database
  :custom_fields => [{id: 2, value: "IT"}]
)
if issue.save
  puts issue.id
else
  puts issue.errors.full_messages
end

# Updating an issue
issue = Issue.find(1)
issue.subject = 'REST API'
issue.save

# Deleting an issue
issue = Issue.find(1)
#issue.destroy

您可能需要在ActiveResource类中设置include_root_in_json = true

纯Ruby (仅使用Ruby核心)

以下是一个示例,使用net/http PUT请求将问题#9599的状态设置为内部状态_id 1

require 'net/https'
require 'uri'
require 'json'

def update_issue_status issue_id, new_status_id, change_note
  base_url = "https://your.redmine.example.com" 
  api_token = "xxxxxxxxxxxxxxx" 

  payload = {
    issue: {
      notes: change_note,
      status_id: new_status_id
    }
  }

  url = "#{base_url}/issues/#{issue_id}.json" 
  uri = URI.parse(url)
  req = Net::HTTP::Put.new(uri.request_uri)

  req["Content-Type"] = "application/json" 
  req['X-Redmine-API-Key'] = api_token
  req.body = payload.to_json

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  response = http.request(req)
  return response
end

# Set Status of issue #9599 to internal status_id = 1
response = update_issue_status 9599, 1, "Changed Issue Status via REST-API" 

James Patrick更新 大约7年前 · 15次修订