首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设计C++ rest客户端

设计C++ rest客户端
EN

Stack Overflow用户
提问于 2012-08-14 03:45:38
回答 1查看 1.6K关注 0票数 2

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

我看到的大多数API客户端库只是提供了一种非常接近于ReST API的调用样式,在这里您必须阅读ReST API文档才能使用它。他们不是真正用他们的母语风格写的,国际海事组织。他们基本上是包装一个http库,可能是一个XML/JSON库,并处理一些特殊的事情,比如auth:

风格1:

代码语言:javascript
复制
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:

代码语言:javascript
复制
try {
   Api.setName( UserId, "Joe" );
   print Api.getSomethingWeCareAbout();
} catch( ApiException e ) {
   print e.getMessage();
}

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-16 19:25:33

经过仔细考虑,我自己的问题的部分答案是,第一种样式可能更易于多线程。使用该库的人可以创建如下函数:

代码语言:javascript
复制
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中的每个函数调用执行一次这样的操作就需要做更多的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11945499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档