Remove REST Server quick start; Add links of wiki.

master
Chunting Gu 7 years ago committed by GitHub
parent 01c7a6e328
commit 12d933fb54
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,99 +2,13 @@
A lightweight C++ REST and SOAP client and server library based on *Boost.Asio*.
Please turn to our [Wiki](https://github.com/sprinfall/webcc/wiki) for more tutorials and guides.
Please turn to our [Wiki](https://github.com/sprinfall/webcc/wiki) for more tutorials and guides, or just follow the links below:
## Quick Start
### REST Server
Suppose you want to create a book server, and provide the following operations with RESTful API:
- Query books based on some criterias.
- Add a new book.
- Get the detailed information of a book.
- Update the information of a book.
- Delete a book.
The first two operations can be implemented by deriving from `webcc::RestListService`:
```cpp
class BookListService : public webcc::RestListService {
protected:
// Get a list of books based on query parameters.
void Get(const webcc::UrlQuery& query,
webcc::RestResponse* response) final;
// Create a new book.
// The new book's data is attached as request content in JSON format.
void Post(const std::string& request_content,
webcc::RestResponse* response) final;
};
```
The others, derive from `webcc::RestDetailService`:
```cpp
// The URL is like '/books/{BookID}', and the 'url_sub_matches' parameter
// contains the matched book ID.
class BookDetailService : public webcc::RestDetailService {
protected:
// Get the detailed information of a book.
void Get(const webcc::UrlSubMatches& url_sub_matches,
const webcc::UrlQuery& query,
webcc::RestResponse* response) final;
// Update a book.
void Put(const webcc::UrlSubMatches& url_sub_matches,
const std::string& request_content,
webcc::RestResponse* response) final;
// Delete a book.
void Delete(const webcc::UrlSubMatches& url_sub_matches,
webcc::RestResponse* response) final;
};
```
As you can see, all you have to do is to override the proper virtual functions which are named after HTTP methods.
The detailed implementation is out of the scope of this document, but here is an example:
```cpp
void BookDetailService::Get(const webcc::UrlSubMatches& url_sub_matches,
const webcc::UrlQuery& query,
webcc::RestResponse* response) {
if (url_sub_matches.size() != 1) {
// Invalid URL.
response->status = webcc::HttpStatus::kBadRequest;
return;
}
const std::string& book_id = url_sub_matches[0];
// Get the book by ID from, e.g., database.
// ...
if (<NotFound>) {
response->status = webcc::HttpStatus::kNotFound;
} else {
response->content = <JsonStringOfTheBook>;
response->status = webcc::HttpStatus::kOK;
}
}
```
Last step, bind the services and run the server:
```cpp
webcc::RestServer server(8080, 2);
server.Bind(std::make_shared<BookListService>(), "/books", false);
server.Bind(std::make_shared<BookDetailService>(), "/books/(\\d+)", true);
server.Run();
```
Please see `example/rest_book_server` for the complete example.
- [Integrate Into Your Project](https://github.com/sprinfall/webcc/wiki/Integrate-Into-Your-Project)
- [Logging](https://github.com/sprinfall/webcc/wiki/Logging)
- [SOAP Client Tutorial](https://github.com/sprinfall/webcc/wiki/SOAP-Client-Tutorial)
- [SOAP Server Tutorial](https://github.com/sprinfall/webcc/wiki/SOAP-Server-Tutorial)
- [REST Server Tutorial](https://github.com/sprinfall/webcc/wiki/REST-Server-Tutorial)
## Build Instructions

Loading…
Cancel
Save