此回傳發送回單個字串,accessToken
來自ContentResponse
:
return body.encodeResponse(for: request)
.map { $0.body.buffer }
.flatMap { buffer in
return request.client.post(url, headers: self.callbackHeaders) { $0.body = buffer }
}.flatMapThrowing { response in
return try response.content.get(ContentResponse.self)
}.map { $0.accessToken }
這是在完成處理程式中收到的:
return try self.fetchToken(from: request).flatMap { accessToken in
如何發回兩個字串 - theaccessToken
和refreshToken
from the ContentResponse
?
非常感謝您對如何構建它的任何幫助!
uj5u.com熱心網友回復:
您可以定義并使用 astruct
回傳,但對于像這樣的一次性情況,我通常只使用帶有命名成員的元組:
return body.encodeResponse(for: request)
.map { $0.body.buffer }
.flatMap { buffer in
return request.client.post(url, headers: self.callbackHeaders) { $0.body = buffer }
}.flatMapThrowing { response in
return try response.content.get(ContentResponse.self)
}.map { (accessToken: $0.accessToken, refreshToken: $0.refreshToken) } // <<- This is changed line
這將導致回傳型別 of[(accessToken: String, refreshToken: String)]
而不是[String]
,因此fetchToken(from:)
必須更改回傳型別以匹配。
然后你呼叫它的代碼如下所示:
return try self.fetchToken(from: request).flatMap { tokens in // <<- renamed to indicate it contains more than one value
/*
refer to tokens.accessToken and tokens.refreshToken in whatever
code goes here
*/
...
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/516581.html