gpt4 book ai didi

c++ - 设计 C++ 休息客户端

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:31:04 25 4
gpt4 key购买 nike

我目前正准备设计一个 C 或 C++ 库来访问现有的 Rest 服务,但我不确定:

我见过的大多数像这样的 API 客户端库只是提供了一种非常接近 ReST API 的调用方式,您必须阅读 ReST API 文档才能使用它。它们并不是真正以 IMO 语言的原生风格编写的。它们基本上包装了一个 http 库,也许是一个 XML/JSON 库,并处理一些特殊的事情,比如 auth:

样式 1:

paramList.add( "name", "Joe" )
response = makeARestCall( POST, "path/to/resource", paramList, miscAuthData );
if( result.code == 200 ) {
//success
xml = response.getXml();
somethingWeCareAbout = xpath.parse( xml, "response/something/we/care/about" );
print somethingWeCareAbout
} else {
print "Something went wrong"
}

在我看来,使用语言的约定比使用 API 更自然。考虑将 API 用作调用函数而不是访问资源。

样式 2:

try {
Api.setName( UserId, "Joe" );
print Api.getSomethingWeCareAbout();
} catch( ApiException e ) {
print e.getMessage();
}

我已经用后一种风格编写了 API 库,它们需要做更多的工作,但我发现它们更易于使用和集成到应用程序中,尤其是对于复杂的 ReST API,但我在这方面不是很有经验。

一种风格明显优于另一种吗?除了易于开发之外,还有什么原因似乎大多数都是用第一种风格编写的?

这个库肯定会用在多线程应用程序和 UI 中,所以请记住线程。

最佳答案

经过深思熟虑,对我自己的问题的部分回答是,第一种样式可能更容易进行多线程处理。使用该库的人可以创建这样的函数:

void asyncRestCall( Method method, String resource, map<String,String> parameters, misc misc, function onCompletion ) {
//fork a new thread
...

//do the call
result = makeARestCall( method, resource, parameters misc );

//back in original thread
...

onCompletion( result );
}

而在样式 2 中对每个函数调用都执行一次是更多的工作。

关于c++ - 设计 C++ 休息客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11945499/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com