proxychains-ng
git clone https://github.com/rofl0r/proxychains-ng
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
make install
make install-config # 生成配置文件
echo 'http 10.100.100.136 4411' >> /etc/proxychains.conf # 输入代理设置
git clone https://github.com/rofl0r/proxychains-ng
cd proxychains-ng
./configure --prefix=/usr --sysconfdir=/etc
make
make install
make install-config # 生成配置文件
echo 'http 10.100.100.136 4411' >> /etc/proxychains.conf # 输入代理设置
在此页面上,你将详细了解如何查询 GrahQL 服务器。
最简单的,GraphQL 是关于要求对象上的特定字段。我们先来看一个非常简单的查询,当我们运行它时得到结果:
{
hero {
name
}
}
{
"data": {
"hero": {
"name": "R2-D2"
}
}
}
可以看到,查询与结果的形状完全相同。这对于 GraphQL 是至关重要的,因为您总是收到您期望的内容,并且服务器确切知道客户端要求哪些字段。
通过使用类型系统,可以预先确定 GraphQL 查询是否有效。 这样可以让服务器和客户端有效地通知开发人员在创建无效查询时,无需在运行时检查。
对于我们的星球大战示例,文件starWarsValidation-test.js包含许多无效的查询,可以用来测试当前实现的验证器。
首先,我们来看一个复杂的有效查询。 这是一个嵌套查询,类似于上一节的一个示例,但将重复的字段分解成一个片段:
最近学 Go,感觉挺不错的。闲来无事用它写了几种常用的基础算法。
思想很简单,实现起来为了方便每次以 left 作为基准,也可以使用 BFS 来节省递归栈:
// QuickSort returns a sorted slice
func QuickSort(arr []int) {
if len(arr) <= 1 {
return
}
left, right := 0, len(arr)-1
for left < right {
if arr[left+1] > arr[left] {
arr[left+1], arr[right] = arr[right], arr[left+1]
right--
} else {
arr[left+1], arr[left] = arr[left], arr[left+1]
left++
}
}
QuickSort(arr[:left])
QuickSort(arr[left+1:])
}
查询 GraphQL 架构有关它支持的查询的信息通常很有用。 GraphQL 允许我们使用内省系统来做到这一点!对于我们的星球大战例子来说,文件starWarsIntrospection-test.js包含许多查询内省系统的查询,并且是一个完整的按照规范实现的测试文件。
我们设计了类型系统,所以我们应该知道系统中可用的类型。但是如果不知道,我们还可以通过查询__schema 字段来询问 GraphQL。这个字段始终存在于根类型中。
在此页面上,您将了解有关 GraphQL 类型系统的所有知识,以及如何描述可查询哪些数据。 由于 GraphQL 可以与任何后端框架或编程语言一起使用,因此我们将远离实现特定的详细信息,仅讨论概念。
如果您以前看过 GraphQL 查询,那么你应该知道 GraphQL 查询语言基本上是在对象上选择字段。 所以在以下查询中:
{
hero {
name
appearsIn
}
}
返回 DOMTokenList,IE version>=10 不完全支持。
经过验证,GraphQL 查询由 GraphQL 服务器执行,然后返回一个与查询形状相同的结果,通常为 JSON。
GraphQL 无法执行没有类型系统的查询,让我们使用类型系统例子来说明执行查询,这个例子是我们教程中使用的类型系统中的一部分:
type Query {
human(id: ID!): Human
}
type Human {
name: String
appearsIn: [Episode]
starships: [Starship]
}
enum Episode {
NEWHOPE
EMPIRE
JEDI
}
type Starship {
name: String
}