Jon*_*ing 3 jquery json github-api graphql
我正在尝试使用GraphQL对GitHub进行API调用,我已经能够使用静态graphQL调用成功调用数据,但是我在调用中输入变量(var条目)时遇到问题,这样我就可以更改调用在用户将在Web应用程序中提供的输入上.
我正在使用AJAX来传递授权令牌.此外,除非查询是JSON字符串化,否则调用不起作用(否则将获得400错误).
JSON Stringify似乎将变量'superQuery'的名称变为字符串,而不是将'superQuery'的值转换为字符串.
如何使用可根据用户输入更改的变量发送graphQL查询?
PS相对于web开发的noob,对任何超级明显的错误道歉.
这是我到目前为止:
var entry = $('#entry').val()
var superQuery = `{
repository(name: entry, owner: "******") {
pullRequests(last: 100) {
nodes {
state
headRepository {
owner {
login
}
}
}
}
}
}`
.ajax({
method: "POST",
url: "https://api.github.com/graphql",
contentType: "application/json",
headers: {
Authorization: "bearer **********************************"
},
data: JSON.stringify({
query: superQuery
})
})
Run Code Online (Sandbox Code Playgroud)
对于任何有同样问题的人来说,这就是我最终使用它时代码的样子:
$('button').click(function() {
event.preventDefault();
var entry = $('#entry').val()
console.log(entry);
$.ajax({
method: "POST",
url: "https://api.github.com/graphql",
contentType: "application/json",
headers: {
Authorization: "bearer ***********"
},
data: JSON.stringify({
query: `query ($entry: String!) {repository(name: $entry,
owner: "*******") { pullRequests(last: 100) {
nodes {
state
headRepository {
owner {
login
}
}
}
}
}
}`,
variables: {
"entry": $('#entry').val()
}
})
})
Run Code Online (Sandbox Code Playgroud)
如果我正确理解你的问题,我相信你想要执行以下操作(假设条目是一个字符串):
var superQuery = `query repository($entry: String)
repository(entry: $entry) {
pullRequests(last: 100) {
nodes {
state
headRepository {
owner {
login
}
}
}
}
}`
Run Code Online (Sandbox Code Playgroud)
然后是你的数据:
data: JSON.stringify({
query: superQuery,
variables: { "entry": $('#entry').val() }
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5609 次 |
| 最近记录: |