JQL查询中如何正确转义项目名称里的特殊字符?
我在用 Jira 的 REST API 调用 JQL 查询时,项目名里有个连字符(比如 “FRONT-END”),结果一直报语法错误。试过加引号、转义符都不行,是不是我写法有问题?
前端是用 Vue 发请求的,代码大概这样:
<script>
export default {
methods: {
async fetchIssues() {
const jql = project = FRONT-END AND status = "In Progress";
const res = await fetch(/rest/api/2/search?jql=${encodeURIComponent(jql)});
// 返回 400 错误:JQL parse error
}
}
}
</script>
首先,JQL 语句中的字符串(比如项目名称)应该用双引号括起来。但是,如果你的项目名称包含了双引号,那么你需要对双引号进行转义。不过,在你的例子中,项目名称没有双引号,所以只需要用双引号包裹就可以了。
其次,你在构建 JQL 查询字符串时,还需要确保整个字符串被正确地 URL 编码。这是因为你在通过 URL 参数传递这个查询字符串,浏览器或者服务器可能不会正确解析未编码的特殊字符。
我们来看一下修正后的代码:
这里需要注意的是,我们在构建 JQL 查询字符串时,将项目名称 "FRONT-END" 用双引号包裹。然后,我们使用
encodeURIComponent函数对整个 JQL 字符串进行 URL 编码,确保所有的特殊字符都被正确处理。最后,我们将编码后的字符串作为jql参数的值传递给fetch函数。这样应该可以解决你遇到的 JQL 解析错误的问题。希望这能帮到你!