Möglichkeiten zum Implementieren eines JSON-RESTful-Dienstes in C/C++

Lesezeit: 3 Minuten

Ich versuche, einen JSON Restful-Webdienst in C/C++ zu erstellen. Ich habe Axis2/C und Staff ausprobiert, die hervorragend für die XML-Serialisierung/Deserialisierung funktionieren, aber nicht für JSON.

  • Gute Frage, aber befolgen Sie meinen Rat: Wenn Sie diesen Webdienst in Java (oder einem anderen Framework-freundlichen Webdienst) ausführen können, tun Sie es. Das Herumspielen mit Low-Level-Zeug, das C++ bietet, ist großartig zum Lernen, aber es wird Sie in den meisten Fällen verlangsamen.

    – Pony

    20. März 2012 um 17:36 Uhr


  • Poni hat Recht. Selbst wenn Sie Ihren eigenen Java-Dienst “rollen” (z. B. mit Jetty und Gson), können Sie in wenigen Stunden etwas Einfaches erhalten, wie ich festgestellt habe. Es mag Frameworks geben, die all das Servlet-Zeug für Sie erledigen, aber es fällt Ihnen nichts sofort ein.

    – Tom

    22. März 2012 um 17:51 Uhr

  • @poni und Tom. Was ist mit der Geschwindigkeit, was wäre, wenn ich ein JSON-Framework schreiben und es blutig schnell machen wollte? Wäre c\c++ nicht eine gute Idee?

    – Gideon

    17. November 2014 um 23:44 Uhr

  • @gideon ja wenn du es optimal schreiben kannst und viele Anfragen hast. Sonst wirst du keinen signifikanten Unterschied feststellen.

    – Sujay Phadke

    25. Februar 2016 um 21:02 Uhr

Vielleicht möchten Sie einen Blick darauf werfen Casablanca eingeführt in Herb Sutters Blog.

  • Können wir Casablanca in einer Produktionsumgebung verwenden?

    – Vans Fannel

    25. Oktober 2013 um 7:23 Uhr

  • Codeplex wird heruntergefahren 🙁

    – wcochran

    16. Juni 2017 um 21:38 Uhr

Benutzer-Avatar
Schaaban Ebrahim

Es gibt eine kleine Anzahl von Bibliotheken, die das Erstellen von Restdiensten mit c unterstützen, z restinio:

#include <restinio/all.hpp>
int main()
{
    restinio::run(
        restinio::on_this_thread()
        .port(8080)
        .address("localhost")
        .request_handler([](auto req) {
            return req->create_response().set_body("Hello, World!").done();
        }));
    return 0;
}

Versuchen https://github.com/babelouest/ulfius großartige Bibliothek zum Erstellen von C/C++ Restful APIs. kann alle Plattformen unterstützen: Linux, FreeBSD, Windows und andere

Könnte man sich anschauen ffead-cpp. Neben der Unterstützung für json und Restfull Web Services enthält es auch weitere Funktionen. Dieser Rahmen kann jedoch für Ihre Situation zu schwer sein.

Benutzer-Avatar
Loentar

Versuchen ngrest. Es ist ein einfaches aber schnell C++-RESTful-JSON-Webdienst-Framework. Es kann auf Apache2, Nginx oder einem eigenen einfachen HTTP-Server bereitgestellt werden.


Bezüglich Axis2/C mit JSON. Es scheint, dass das offizielle Axis2/C nicht mehr gepflegt wird. Also wird Axis2/C obsolet (funktioniert aber immer noch).

JSON-Unterstützung für Axis2/C ist verfügbar in axis2c-inoffiziell Projekt.

Es gibt Installationshandbücher zur Installation von Axis2/C mit JSON-Unterstützung unter Linux, Windows mit Binärpaket, Windows aus dem Quellcode.

Sie können es mit WSF Staff unter Verwendung des Beispiels Customers (REST) ​​im JSON-Modus versuchen (der unter verfügbar ist staff/samples/rest/webclient Verzeichnis des Mitarbeiter-Quellcodes).

Benutzer-Avatar
lganzzzo

Schauen Sie sich an Hafer++

Es hat:

  • URL-Routing mit Zuordnung von URL-Parametern
  • Unterstützung für Swagger-UI-Endpunktanmerkungen.
  • Objekt-Mapping mit JSON-Unterstützung.

Beispiel Endpunkt:

ENDPOINT("GET", "users/{name}", getUserByName, PATH(String, name)) {
  auto userDto = UserDto::createShared();
  userDto->name = name;
  return createDtoResponse(Status::CODE_200, userDto);
}

Locken:

$ curl http://localhost:8000/users/john
{"name":"john"}

Benutzer-Avatar
Georgien

Für den C++-Webdienst verwende ich den folgenden Stack:

1371230cookie-checkMöglichkeiten zum Implementieren eines JSON-RESTful-Dienstes in C/C++

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy