我们已经创建了一个API来获取用户详细信息。要获取任何特定用户详细信息,需要输入已验证的号码。
API看起来像:
var callbacks = MTAudioProcessingTapCallbacks(
version: kMTAudioProcessingTapCallbacksVersion_0,
clientInfo: UnsafeMutableRawPointer(Unmanaged<AnyObject>.passUnretained(self as AnyObject).toOpaque()),
init: tapInit,
finalize: tapFinalize,
prepare: tapPrepare,
unprepare: tapUnprepare,
process: tapProcess)
var tap: Unmanaged<MTAudioProcessingTap>?
let status = MTAudioProcessingTapCreate(kCFAllocatorDefault, &callbacks, kMTAudioProcessingTapCreationFlag_PostEffects, &tap)
if status != noErr {
debugPrint("Failed to create audio processing tap.")
throw BoosterExporterError.failure
}
此处,userid是我们需要的详细用户的ID,并且该号码是移动设备 - 想要获取这些详细信息的人数。如果验证了该号码,我们会收到GET /api/details/?number=983984348&userid=123
的详细信息。如果未验证该号码,我们会将状态发回“未验证”。
如果客户端未获得验证状态,客户端需要点击验证API。 API看起来像:
user 123
点击此API后,客户端会获取需要点击以验证的网址。
目前,我们已按照/api/verify/?number=983984348
错误对每个客户端的{url /api/verify/?number=983984348
进行了硬编码,因为它建议应由服务器指导。
我不知道这个API网址应该如何从客户端发送到服务器,即在响应头中使用简单的响应体OR?有人可以解释一下如何将这种导航从服务器引导到客户端吗?
答案 0 :(得分:1)
只考虑问题的范围,如果你点击/api/details/?number=983984348&userid=123
uri,它告诉客户端该号码未经验证,那么你也可以在响应的正文中包含一个URI使用
示例(使用HAL,编码为JS而不是JSON,但适用于其他超媒体格式):
{
_links : {
self : { href: '/api/details/?number=983984348&userid=123' },
verify : { href: '/api/verify/?number=983984348' }
}
verified: false
}
HTTP链接头也可以工作:
Link: </api/verify/?number=983984348>; rel="verify"
在我们的例子中,我们构建了一个开源的javascript REST客户端,它支持header或hal _link
,并不关心它是哪一个。我们的客户会做这样的事情:
var client;
// usually you'll want to discover this url as well.
var user = await client.getResource('/api/verify/?number=983984348');
var userBody = await client.get();
if (!userBody.verified) {
var verifyResource = await userBody.follow('verify');
// verifyResource.put() might come next?
}
不确定最后一点是否有帮助,但它帮助我思考这个问题。