使用YouTrack Rest API将命令应用于字符串类型自定义字段

使用YouTrack Rest API将命令应用于字符串类型自定义字段,rest,youtrack,youtrack-api,Rest,Youtrack,Youtrack Api,谢谢你的关注 我有一个YouTrack实例,其中有几个自定义字段,其中一些是字符串类型。我正在实现一个模块,通过YouTrack REST API创建一个新问题,然后使用用户提交的值更新其字段。大多数情况下,这很有效 我知道,通过将多个命令连接到查询字符串中,可以同时对一个问题应用多个命令,如下所示: 输入错误优先级关键添加修复版本5.1标记回归 将导致 类型:Bug 优先事项:关键 修复版本:5.1 在各自的字段中(以及添加回归标记)。但是,如果我尝试对多个字符串类型自定义字段执行相同的操

谢谢你的关注

我有一个YouTrack实例,其中有几个自定义字段,其中一些是字符串类型。我正在实现一个模块,通过YouTrack REST API创建一个新问题,然后使用用户提交的值更新其字段。大多数情况下,这很有效

我知道,通过将多个命令连接到查询字符串中,可以同时对一个问题应用多个命令,如下所示:

输入错误优先级关键添加修复版本5.1标记回归

将导致

  • 类型:Bug
  • 优先事项:关键
  • 修复版本:5.1
在各自的字段中(以及添加回归标记)。但是,如果我尝试对多个字符串类型自定义字段执行相同的操作,则:

Foo something示例something Bar P0001

导致

  • Foo:something-Example-something-Bar P0001
  • 例如:
  • 酒吧:
该命令仅适用于第一个字段,查询字符串的其余部分被视为其字符串值。我可以为每个字段单独应用该命令,但是有没有更简单的方法来组合这些请求


再次感谢

这是预期结果,因为
foo
之后的所有字符串都被视为此字段的值,空格也是字符串自定义字段的有效符号


如果您试图通过UI中的命令窗口应用此命令,您将实际看到相同的结果。

这是预期结果,因为
foo
之后的所有字符串都被视为此字段的值,空格也是字符串自定义字段的有效符号

如果您试图通过UI中的命令窗口应用此命令,您将实际看到相同的结果。

这是一个很好的问题

我遇到了同样的问题,并且在沮丧中度过了不健康的时间。 使用YouTrack UI中的命令窗口,我注意到它留下了尾随的引号,我在文档中找不到任何讨论结束或标识字符串值结尾的内容。在命令参考、语法文档或示例中,我也找不到任何关于设置字符串字段值的内容

对于我的解决方案,我将Python与
请求
urllib
模块一起使用尽管我希望你能将解决方案转换为任何语言

RESTAPI将接受
POST

import requests
import urllib
from collections import OrderedDict

URL = 'http://youtrack.your.address:8000/rest/issue/{issue}/execute?'.format(issue='TEST-1234')

params = OrderedDict({
    'State': 'New',
    'Priority': 'Critical',
    'String Field': '"Message to submit"',
    'Other Details': '"Fold the toilet paper to a point when you are finished."'
})

str_cmd = ' '.join(' '.join([k, v]) for k, v in params.items())
command_url = URL + urllib.urlencode({'command':str_cmd})

result = requests.post(command_url)

# The command result:
# http://youtrack.your.address:8000/rest/issue/TEST-1234/execute?command=Priority+Critical+State+New+String+Field+%22Message+to+submit%22+Other+Details+%22Fold+the+toilet+paper+to+a+point+when+you+are+finished.%22
我很难过看到这个问题这么长时间没有得到回答希望这有帮助

编辑:

在继续我的工作后,我得出结论,发送所有字段 作为单个
POST
更新对YouTrack来说稍微好一点 服务器,但需要付出更多的努力:

1) 了解问题中
string
值的所有字段

2) 将所有字符串值预处理为字符串文字

3) 如果将所有字段更新作为单个请求发送,但其中只有一个丢失、设置失败或是意外值,则整个请求将失败,并且可能会丢失所有其他信息

我希望YouTrack文档中提到或讨论 这些考虑

这么好的问题

我遇到了同样的问题,并且在沮丧中度过了不健康的时间。 使用YouTrack UI中的命令窗口,我注意到它留下了尾随的引号,我在文档中找不到任何讨论结束或标识字符串值结尾的内容。在命令参考、语法文档或示例中,我也找不到任何关于设置字符串字段值的内容

对于我的解决方案,我将Python与
请求
urllib
模块一起使用尽管我希望你能将解决方案转换为任何语言

RESTAPI将接受
POST

import requests
import urllib
from collections import OrderedDict

URL = 'http://youtrack.your.address:8000/rest/issue/{issue}/execute?'.format(issue='TEST-1234')

params = OrderedDict({
    'State': 'New',
    'Priority': 'Critical',
    'String Field': '"Message to submit"',
    'Other Details': '"Fold the toilet paper to a point when you are finished."'
})

str_cmd = ' '.join(' '.join([k, v]) for k, v in params.items())
command_url = URL + urllib.urlencode({'command':str_cmd})

result = requests.post(command_url)

# The command result:
# http://youtrack.your.address:8000/rest/issue/TEST-1234/execute?command=Priority+Critical+State+New+String+Field+%22Message+to+submit%22+Other+Details+%22Fold+the+toilet+paper+to+a+point+when+you+are+finished.%22
我很难过看到这个问题这么长时间没有得到回答希望这有帮助

编辑:

在继续我的工作后,我得出结论,发送所有字段 作为单个
POST
更新对YouTrack来说稍微好一点 服务器,但需要付出更多的努力:

1) 了解问题中
string
值的所有字段

2) 将所有字符串值预处理为字符串文字

3) 如果将所有字段更新作为单个请求发送,但其中只有一个丢失、设置失败或是意外值,则整个请求将失败,并且可能会丢失所有其他信息

我希望YouTrack文档中提到或讨论 这些考虑