10月8日至10日与我们在纽约市相聚,了解最新关于GraphQL Federation和API平台工程的技巧、趋势和新闻。加入我们,在纽约市参加2024年GraphQL峰会
文档
免费开始
您正在查看此软件先前版本的文档。 切换到最新稳定版本。

在不使用apollo-runtime的情况下使用模型


apollo-runtimeApolloClient提供了支持进行网络请求和与缓存交互,但您可以在没有运行时的情况下使用生成的模型和解析器,并使用您选择的网络层对HTTP调用进行操作。

为此,请删除com.apollographql.apollo3:apollo-runtime依赖项,并替换为:

build.gradle
implementation("com.apollographql.apollo3:apollo-api:3.8.5")

构建HTTP请求体

要将HTTP POST请求体发送到您的服务器,请使用composeJsonRequest

/**
* jsonRequest contains data to be sent to the server
* {
* "query": ...
* "variables": ...
* "extensions": ...
* }
*/
val body = buildJsonString {
query.composeJsonRequest(this, customScalarAdapters)
}
/**
* Send it to your backend
*/
val httpResponse = sendHttpRequest(
"POST",
"https://com.example/graphql",
"application/json",
body
)

解析HTTP响应体

要将网络响应解析为类型安全的模型,请使用parseJsonResponse

/**
* jsonResponse should contain a json with data and possibly errors:
* {
* "data": ...
* "errors": ...
* "extensions": ...
* }
**/
val jsonReader = httpResponse.body.source().buffer().jsonReader()
val response = operation.parseJsonResponse(jsonReader)
println(response.data)

构建HTTP响应体

对于您的集成测试,您还可以从程序构建的data中构建完整的响应。为此,请使用composeJsonResponse

/**
* Build a fake data object
**/
val data = SomeQuery.Data(...)
/**
* jsonResponse contains a json with data and possibly errors:
* {
* "data": ...
* "errors": ...
* "extensions": ...
* }
**/
val jsonResponse = buildJsonString {
operation.composeJsonResponse(this, data)
}
mockServer.enqueue(jsonResponse)
上一页
自定义HTTP客户端
下一页
身份验证
评分文章评分在GitHub上编辑编辑论坛Discord

©2024Apollo Graph Inc.(美国阿波罗图灵公司)。

隐私政策

公司