https://github.com/mancode77/simple-http-server
Inspirasi dari beriw: https://github.com/PT-Archana-Berry-Developer-Indonesia/archanaberry-expresspp
https://github.com/mancode77/simple-http-server
cpp11 http-server
Last synced: 5 months ago
JSON representation
Inspirasi dari beriw: https://github.com/PT-Archana-Berry-Developer-Indonesia/archanaberry-expresspp
- Host: GitHub
- URL: https://github.com/mancode77/simple-http-server
- Owner: mancode77
- Created: 2024-06-14T15:14:32.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-16T07:12:13.000Z (almost 2 years ago)
- Last Synced: 2025-04-10T01:44:41.177Z (about 1 year ago)
- Topics: cpp11, http-server
- Language: C++
- Homepage:
- Size: 160 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simple HTTP Server di C++
Implementasi sederhana dari HTTP server menggunakan C++ untuk menangani permintaan HTTP dasar dan routing menggunakan thread dan soket.
## Deskripsi
HTTP Server ini dirancang untuk mendengarkan permintaan HTTP pada port tertentu, menangani rute yang ditentukan pengguna, dan memberikan respons sesuai dengan handler yang terdaftar.
### Fitur Utama
- Menangani permintaan HTTP GET untuk rute yang ditentukan.
- Mendukung penanganan multi-threading untuk melayani beberapa klien secara bersamaan.
- Menggunakan mutex untuk memastikan keselamatan akses ke sumber daya bersama.
## Persyaratan
Sebelum menggunakan server ini, pastikan Anda memiliki hal berikut:
- Compiler C++ (yang mendukung C++11 atau versi lebih baru)
- Header yang diperlukan (`iostream`, `sstream`, `regex`, `sys/socket.h`, `arpa/inet.h`, `unistd.h`, `thread`, `vector`, `mutex`)
## Instalasi dan Penggunaan
### Langkah 1: Clone Repositori
Clone repositori ini ke mesin lokal Anda:
```bash
git clone https://github.com/mancode77/simple-http-server.git
cd http-server-cpp
```
#### Contoh penggunaan Rute dan Handler
Anda dapat menambahkan rute kustom dan fungsi handler ke server. Edit file `main.cpp` untuk menambahkan rute baru dan mendefinisikan handler yang sesuai.
Contoh menambahkan rute `/hello` dengan handler `helloHandler`:
```cpp
#include "http_server.h"
#include
void helloHandler(const std::map& params, std::string& response) {
response = "HTTP/1.1 200 OK\r\nContent-Type: application/json\r\n\r\n";
response += "{ \"message\": \"Hello, World!\" }";
}
int main() {
HTTPServer server;
// Tambahkan rute dan handler
server.addRoute("/hello", helloHandler);
// Mulai server pada port 8080
server.start(8080);
return 0;
}
```
### Langkah 2: Kompilasi Server dan Menjalankan Server
Kompilasi server menggunakan compiler C++:
```bash
# Untuk Linux dan Mac
chmod +x script.sh
./run_linux_or_mac.sh
#Untuk Windows
runner_windows.bat
```
Secara default, server akan mendengarkan pada port 8080. Anda dapat mengubah port di dalam fungsi `main` pada file sumber Anda.
### Langkah 3: Mengakses Server
Buka browser web atau gunakan `curl` untuk mengakses server:
```bash
curl http://localhost:8080/hello
```
Ini akan mengirimkan permintaan GET ke endpoint `/hello` pada server.
## Kontribusi
Kontribusi dipersilakan! Jika Anda menemukan masalah atau memiliki saran untuk perbaikan, silakan buka isu atau kirimkan pull request.
## Lisensi
Proyek ini dilisensikan di bawah Lisensi MIT.
Dokumentasi ini sekarang lebih terstruktur dan membantu pengguna untuk memahami langkah-langkah instalasi, penggunaan, serta cara menambahkan rute dan handler baru ke server HTTP berbasis C++ ini. Pastikan untuk mengganti bagian yang sesuai dengan detail proyek Anda sendiri sebelum menggunakan atau mendistribusikan.