Example of how to create a RESTful API server using the QHttpServer.
This example shows how to set up a RESTful API server using the QHttpServer class. The Address Book API allows create, read, update and delete operations of name and address entries.
httpServer.route("/v2/contact", QHttpServerRequest::Method::Get, [&contacts](const QHttpServerRequest &) { QJsonArray array; std::transform(contacts.cbegin(), contacts.cend(), std::inserter(array, array.begin()), [](const auto &it) { return it.toJson(); }); return QHttpServerResponse(array); });
In the example above, the route is specified for the GET method, which returns the JSON array with all address entries stored. To achieve that, the QHttpServer::route() method is used with the QHttpServerRequest::Method::Get enumeration.
httpServer.route( "/v2/contact", QHttpServerRequest::Method::Post, [&contacts](const QHttpServerRequest &request) { if (!checkApiKeyHeader(request.headers())) { return QHttpServerResponse(QHttpServerResponder::StatusCode::Unauthorized); } const auto json = byteArrayToJsonObject(request.body()); if (!json || !json->contains("address") || !json->contains("name")) return QHttpServerResponse(QHttpServerResponder::StatusCode::BadRequest); const auto entry = insertAddress(contacts, json->value("name").toString(), json->value("address").toString()); return QHttpServerResponse(entry, QHttpServerResponder::StatusCode::Created); });
In this example, the route is specified for the POST method, which adds a new entry to the address book and returns a JSON object that represents the added entry. This JSON object also contains an HTTP status code:
Created
for new entries, or AlreadyReported
for pre-existing entries. This example makes use of an overload of QHttpServerResponse::QHttpServerResponse to
send a JSON object and corresponding HTTP status code.
To create an entry the request body must be a JSON object with address
and name
fields. For example:
{ "address": "Example Street 1, Big City" "name": "John Smith" }
Files:
As part of the free Business evaluation, we offer a free welcome call for companies, to talk about your requirements, and how the Felgo SDK & Services can help you. Just sign up and schedule your call.
Sign up now to start your free Business evaluation: