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.
Möglichkeiten zum Implementieren eines JSON-RESTful-Dienstes in C/C++
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
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.
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).
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"}
Georgien
Für den C++-Webdienst verwende ich den folgenden Stack:
- ipkn/Krähe C++ Micro-Web-Framework
- nlohmann/json für json-Serialisierung/Deserialisierung.
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