首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用c++语言和JSON创建Restful服务

问如何使用c++语言和JSON创建Restful服务
EN

Stack Overflow用户
提问于 2014-07-31 11:30:59
回答 9查看 93.1K关注 0票数 43

我正在开发嵌入式Linux,我希望Restful web服务能够在我的Linux自定义板上运行。

我的目标是向web服务器(httpd server)发送/接收数据( JSON格式)。

另外,我希望使用C++语言创建Restful服务。

请参阅下面关于我的Linux自定义板需要Restful服务的想法。

  1. 首先,我将通过在我的linux板上运行的httpd服务器发送带有JSON格式数据的HTTP请求。
  2. 然后,我想创建一个二进制或服务器,它用c++语言实现这个,用于处理HTTP请求。
  3. 然后,这个C++二进制文件将返回到httpd服务器,以便在web浏览器上显示。

有人有关于如何使用C++语言创建的想法或示例吗?

任何关于Restful的帮助都是受欢迎的。

有没有人想过ffead及其能满足我Restful的功能?

EN

回答 9

Stack Overflow用户

发布于 2018-06-06 04:31:14

我知道这很晚了,但是一两年前出现了一些新的东西。

如果您对高性能的硬核异步编程感兴趣,可以考虑使用助推:野兽。它是助推::asio (通用的tcp/udp和i/o库)之上的一个层,具有http(s)和websocket服务器/客户端。

请记住,这对于多线程的性能和完全自由是非常理想的(如果您有一台可以接受的服务器,那么您就可以在数千个线程上使用几乎完美的缓存来运行服务器),但是它们有一个陡峭的学习曲线。只有当你需要拥有对一切的绝对控制时,才能做到这一点!

票数 6
EN

Stack Overflow用户

发布于 2020-05-13 18:51:09

我正在结合使用燕麦和nlohmann JSON。尽管您可以使用纯oatpp,因为它已经内置了JSON处理特性。请看分步导轨。

票数 5
EN

Stack Overflow用户

发布于 2016-08-16 13:40:54

如果您使用Apache2或Nginx作为Web服务器,并希望在其上部署RESTful JSON服务,请尝试恩格列斯特。使用方便,速度快。

要在C++中表示JSON,ngrest使用标准C++类型 (泛型类型、C++结构、类型防御、STL容器等)。访问原始JSON也是可能的。可以选择使用ngrest-db扩展访问DBMS。

创建C++服务的典型工作流示例:

1)创建一个服务(它可以实现为h/cpp或单个hpp文件):

代码语言:javascript
复制
ngrest create -d hpp Users

2)实现数据结构和操作(资源)。这样编辑users/users/src/Users.hpp:

代码语言:javascript
复制
// a structure to represent data in JSON
struct User {
    int id;
    std::string name;
    std::string email;
};

// *location: /users
class Users: public ngrest::Service
{
public:
    // *method: POST
    int add(const User& user) {
        return Db::inst().users().insert(user).lastInsertId();
    }

    // *location: /{id}
    User get(int id) {
        return Db::inst().users().selectOne("id = ?", id);
    }

    // *method: DELETE
    void remove(int id) {
        Db::inst().users().deleteWhere("id = ?", id);
    }
};

3)为测试运行您的服务:

代码语言:javascript
复制
cd users
ngrest

4)使用服务测试器( RESTful http://localhost:9098/ngrest/service/users )测试您的Web服务

5)将Web服务库部署到运行ngrest的Web服务器上。

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

https://stackoverflow.com/questions/25057819

复制
相关文章

相似问题

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