added c# backend
This commit is contained in:
@@ -0,0 +1,108 @@
|
||||
using System;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Newtonsoft.Json;
|
||||
using System.Collections.Generic;
|
||||
|
||||
class Program
|
||||
{
|
||||
static void Main()
|
||||
{
|
||||
// Create an HttpListener to handle incoming HTTP requests
|
||||
HttpListener listener = new HttpListener();
|
||||
|
||||
// Add a prefix to listen to, e.g., http://localhost:8080/
|
||||
listener.Prefixes.Add("http://localhost:5000/");
|
||||
|
||||
// Start listening for incoming requests
|
||||
listener.Start();
|
||||
Console.WriteLine("Server is listening on http://localhost:5000/");
|
||||
|
||||
// Handle requests on a separate thread to keep server responsive
|
||||
Thread listenerThread = new Thread(() =>
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
// Wait for a request
|
||||
HttpListenerContext context = listener.GetContext();
|
||||
// Get the request and response objects
|
||||
HttpListenerRequest request = context.Request;
|
||||
HttpListenerResponse response = context.Response;
|
||||
// Check if the requested URL is /api
|
||||
if (request.Url.AbsolutePath == "/api")
|
||||
{
|
||||
string connectionString = "Server=localhost;Port=5050;Database=your_database;User ID=your_user;Password=your_password;";
|
||||
MySqlConnection conn = new MySqlConnection(connectionString);
|
||||
|
||||
try
|
||||
{
|
||||
// Open the connection
|
||||
conn.Open();
|
||||
|
||||
// Prepare the SQL query
|
||||
string query = "SELECT * FROM User;";
|
||||
MySqlCommand cmd = new MySqlCommand(query, conn);
|
||||
|
||||
// Execute the query and read the results
|
||||
MySqlDataReader reader = cmd.ExecuteReader();
|
||||
StringBuilder result = new StringBuilder();
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
// Assuming User table has columns "id", "name", and "email"
|
||||
result.AppendLine($"ID: {reader["id"]}, Name: {reader["name"]}, Email: {reader["email"]}");
|
||||
// Prepare the response message
|
||||
string responseMessage = result.ToString();
|
||||
|
||||
|
||||
if (string.IsNullOrEmpty(responseMessage))
|
||||
{
|
||||
responseMessage = "No data found.";
|
||||
}
|
||||
|
||||
byte[] buffer = Encoding.UTF8.GetBytes(responseMessage);
|
||||
|
||||
// Set the response content type and write the response
|
||||
response.ContentType = "text/plain";
|
||||
response.ContentLength64 = buffer.Length;
|
||||
response.OutputStream.Write(buffer, 0, buffer.Length);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Handle any connection errors
|
||||
string errorMessage = $"Error: {ex.Message}";
|
||||
byte[] buffer = Encoding.UTF8.GetBytes(errorMessage);
|
||||
response.ContentType = "text/plain";
|
||||
response.ContentLength64 = buffer.Length;
|
||||
response.OutputStream.Write(buffer, 0, buffer.Length);
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Close the connection
|
||||
conn.Close();
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
// Return 404 for other paths
|
||||
response.StatusCode = 404;
|
||||
string errorMessage = "Not Found";
|
||||
byte[] buffer = Encoding.UTF8.GetBytes(errorMessage);
|
||||
response.ContentType = "text/plain";
|
||||
response.ContentLength64 = buffer.Length;
|
||||
response.OutputStream.Write(buffer, 0, buffer.Length);
|
||||
}
|
||||
|
||||
// Close the response
|
||||
response.OutputStream.Close();
|
||||
}
|
||||
});
|
||||
|
||||
// Start the listener thread
|
||||
listenerThread.Start();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user