API 没有文档时该怎么办
What to do when an API has no documentation
我目前正在尝试使用 REST API 将 Powershell 中的数据插入由某个插件创建的 Jira 自定义字段(JIRA 的简单链接)。不幸的是,没有关于所需语法的文档。 运行 到这个插件的人知道 commands/syntax 我需要使用 REST API (这是一个很小的插件所以如果有人看到它我会感到惊讶) ?如果做不到这一点,是否有人对发现如何将 APIs 与 no/bad 文档一起使用有任何建议,即制作 API return 命令和语法列表的一些标准方法(最好使用 powershell)?
我已经尝试联系开发人员,但没有收到他们的回复。
我使用的代码在这里,如果有帮助的话:
function Test-Upload(){
Param()
Process{
$data=@"
{
"fields":
{
"project":
{
"key": "CCWASSET"
},
"summary": "Testing Linked Field",
"issuetype":
{
"name": "Asset"
},
"description" : "Testing Linked Field"
},
"update":{
"customfield_10500":[
{
"set":{
"type":{
"name":"Asset PO",
"inward":"Asset",
"outward":"Purchase Order"
},
"outwardIssue":{
"key":""
}
}
}
]
}
}
"@
return Jira-WebRequest -data $data
}
}
function Jira-WebRequest(){
Param(
[Parameter(mandatory=$false)]$data,
[Parameter(mandatory=$false)]$requesttype="issue",
[Parameter(mandatory=$false)]$method="POST",
[Parameter(mandatory=$false)]$ContentType='application/json'
)
Process{
$path = $("/rest/api/2/$requesttype/")
$Uri = ""
[URI]::TryCreate([URI]::new($Settings.Jira.URL),"$path",$([ref]$Uri))
$Params = @{
ContentType = $ContentType
Body = $data #$(@{"vlan_id"=$vlanID;"port_id"="$portID";"port_mode"="$portMode"} | ConvertTo-JSON)
Method = $method
URI = $uri.AbsoluteUri
Headers = $JiraHeaders
#WebSession = $Session
}
try{
$result = Invoke-RestMethod @Params -Verbose
return $result
} Catch [System.Net.WebException] {
$exception = $_.Exception
$respstream = $exception.Response.GetResponseStream()
$sr = new-object System.IO.StreamReader $respstream
$ErrorResult = $sr.ReadToEnd()
return $ErrorResult
}
}
}
自定义字段是插件创建的还是您自己创建的都没有关系。最后它是自定义字段,因此由于该插件没有很好的文档,我建议您继续使用 Atlassian 文档并根据官方 REST API 更新/编辑您的问题。您可以查看带有自定义字段的 Atlassian 示例 here
您需要做的是您只需要弄清楚自定义字段 ID 是什么,这很容易,方法是转到管理面板并单击自定义字段并从 URL 检查它(如果您不知道)不想去数据库。
我知道看到 API 没有文档会很痛苦,但至少你可以通过这种方式解决它。
设法让它适用于这个特定的插件。必须包括 ID 字段以及我想要 link 的问题的关键。我仍然很想知道是否有人有一些使用 API 的技巧,这些技巧有 no/bad 文档。
"update":{
"customfield_10500":[
{
"set":{
"type":{
"name":"Asset PO",
"inward":"Asset",
"outward":"Purchase Order"
},
"outwardIssue":{
"key":""
"ID":""
}
}
}
]
}
}
我目前正在尝试使用 REST API 将 Powershell 中的数据插入由某个插件创建的 Jira 自定义字段(JIRA 的简单链接)。不幸的是,没有关于所需语法的文档。 运行 到这个插件的人知道 commands/syntax 我需要使用 REST API (这是一个很小的插件所以如果有人看到它我会感到惊讶) ?如果做不到这一点,是否有人对发现如何将 APIs 与 no/bad 文档一起使用有任何建议,即制作 API return 命令和语法列表的一些标准方法(最好使用 powershell)?
我已经尝试联系开发人员,但没有收到他们的回复。
我使用的代码在这里,如果有帮助的话:
function Test-Upload(){
Param()
Process{
$data=@"
{
"fields":
{
"project":
{
"key": "CCWASSET"
},
"summary": "Testing Linked Field",
"issuetype":
{
"name": "Asset"
},
"description" : "Testing Linked Field"
},
"update":{
"customfield_10500":[
{
"set":{
"type":{
"name":"Asset PO",
"inward":"Asset",
"outward":"Purchase Order"
},
"outwardIssue":{
"key":""
}
}
}
]
}
}
"@
return Jira-WebRequest -data $data
}
}
function Jira-WebRequest(){
Param(
[Parameter(mandatory=$false)]$data,
[Parameter(mandatory=$false)]$requesttype="issue",
[Parameter(mandatory=$false)]$method="POST",
[Parameter(mandatory=$false)]$ContentType='application/json'
)
Process{
$path = $("/rest/api/2/$requesttype/")
$Uri = ""
[URI]::TryCreate([URI]::new($Settings.Jira.URL),"$path",$([ref]$Uri))
$Params = @{
ContentType = $ContentType
Body = $data #$(@{"vlan_id"=$vlanID;"port_id"="$portID";"port_mode"="$portMode"} | ConvertTo-JSON)
Method = $method
URI = $uri.AbsoluteUri
Headers = $JiraHeaders
#WebSession = $Session
}
try{
$result = Invoke-RestMethod @Params -Verbose
return $result
} Catch [System.Net.WebException] {
$exception = $_.Exception
$respstream = $exception.Response.GetResponseStream()
$sr = new-object System.IO.StreamReader $respstream
$ErrorResult = $sr.ReadToEnd()
return $ErrorResult
}
}
}
自定义字段是插件创建的还是您自己创建的都没有关系。最后它是自定义字段,因此由于该插件没有很好的文档,我建议您继续使用 Atlassian 文档并根据官方 REST API 更新/编辑您的问题。您可以查看带有自定义字段的 Atlassian 示例 here
您需要做的是您只需要弄清楚自定义字段 ID 是什么,这很容易,方法是转到管理面板并单击自定义字段并从 URL 检查它(如果您不知道)不想去数据库。
我知道看到 API 没有文档会很痛苦,但至少你可以通过这种方式解决它。
设法让它适用于这个特定的插件。必须包括 ID 字段以及我想要 link 的问题的关键。我仍然很想知道是否有人有一些使用 API 的技巧,这些技巧有 no/bad 文档。
"update":{
"customfield_10500":[
{
"set":{
"type":{
"name":"Asset PO",
"inward":"Asset",
"outward":"Purchase Order"
},
"outwardIssue":{
"key":""
"ID":""
}
}
}
]
}
}