无需apollo-runtime使用模型
apollo-runtime
和 ApolloClient
提供了执行网络请求和与缓存交互的支持,但您可以在不使用运行时的情况下使用生成的模型和分析器,并使用您选择的网络层进行HTTP调用。
为此,请删除 com.apollographql.apollo:apollo-runtime
依赖项,并替换为:
build.gradle
implementation("com.apollographql.apollo:apollo-api:4.0.0")
组合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响应体
在对您的集成测试中,您还可以从程序创建的 数据
中构建一个完整的响应。为此,请使用 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)