建置RESTful API Server 以及用C# 取得RESTful API https->【GET】
RockyLinux and apache HTTP server
程式語言 PHP(Server) and C#(client)
資料庫Mysql8
基礎環境建立
# 更新系統
sudo dnf update -y
# 安裝 Apache HTTP Server
sudo dnf install httpd -y
sudo systemctl enable httpd
sudo systemctl start httpd
# 安裝 MySQL
sudo dnf install mysql-server -y
sudo systemctl enable mysqld
sudo systemctl start mysqld
sudo mysql_secure_installation
PHP 環境配置
# 安裝 PHP 及相關模組
sudo dnf install php php-mysqlnd php-json php-curl php-mbstring -y
# 重啟 Apache 載入 PHP 模組
sudo systemctl restart httpd
安裝 Composer(PHP 套件管理工具)
# 下載並安裝
Composer curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo chmod +x /usr/local/bin/composer
建立 Slim 專案
# 建立專案目錄
sudo mkdir -p /var/www/html/api
cd /var/www/html/api
# 透過 Composer 安裝 Slim
composer require slim/slim:"4.*"
composer require slim/psr7
composer require slim/http
Apache 配置
在 /etc/httpd/conf/httpd.conf:
<Directory "/www/api/">
AllowOverride All #要開All 不然.htaccess失敗就無法rewrite
# Allow open access:
Require all granted
</Directory>
<Directory /www/api/public>
AllowOverride All
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</Directory>
*註解-Slim Framework 的位置
你的伺服器架構:
┌─────────────────┐
│ RockyLinux │ ← 作業系統
├─────────────────┤
│ Apache │ ← 網頁伺服器(處理 HTTP 請求)
├─────────────────┤
│ PHP │ ← 程式語言環境
├─────────────────┤
│ Slim Framework │ ← 你的 API 程式碼(在 PHP 裡面)
├─────────────────┤
│ MySQL │ ← 資料庫
└─────────────────┘
vi /www/api/index.php
|
1. 安裝 PDO MySQL 擴展
# 安裝 PHP MySQL 擴展 sudo dnf install php-pdo php-mysqlnd -y # 重啟 Apache 載入擴展 sudo systemctl restart httpd
2. 建立資料庫和表格
# 登入 MySQL
mysql -u root -p
# 建立資料庫
CREATE DATABASE api_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 建立用戶和授權
CREATE USER 'api_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON api_db.* TO 'api_user'@'localhost';
FLUSH PRIVILEGES;
# 使用資料庫
USE api_db;
# 建立 users 表格
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
email VARCHAR(150) UNIQUE NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
# 插入測試資料
INSERT INTO users (name, email) VALUES
('張小明', 'ming@example.com'),
('李小華', 'hua@example.com'),
('王小美', 'mei@example.com');
EXIT;
.C#
| <!-- 在 .csproj 檔案中添加 --> <PackageReference Include="Newtonsoft.Json" Version="13.0.3" /> |
|
powershell
|
|
csharp
|
