Serwer stworzony w ASP.NET CORE Web API .NET 8.0 i klient w python 3.11
✈️ Funkcjonalność- 💻 Działanie serwera
- 🔧 Konfiguracja serwera
- 🐉 Konfiguracja klienta w pythonie
- 🔒 Konfiguracja certifikatu SSL dla klienta
- 📡 Modyfikowanie bazy danych
Przykład
System rezerwacji biletów lotniczych
- Baza lotów (Miasto od , Miasto do, dzień, godzina)
- Wyszukiwanie lotów
- Kupno biletu
- Odbiór potwierdzenia kupna w formacie PDF
- Sprawdzenie rezerwacji na podstawie podanego numeru
Można sprawdzić działanie serwera w:
SWAGGER:
Klient pythonowy znajduje się w folderze pythonClient:
W postmanie importując dane z:
Tworzymy bazę danych za pomocą
SQL Server Object Explorer
.View -> SQL Server Object Explorer -> SQL Server -> Database -> Add new Database
Po stworzeniu bazy danych, odświeżamy ją klikając na nią prawym przyciskiem i Refresh.
Nastepnie klikamy na nią prawym przyciskiem, wybieramy Properties
z Properties kopiujemy wartość Connection string, które umieszczmy w
appsettings.json
w "DefaultConnectionString"Otwieramy
Package Manage Console
View -> Other Windows -> Package Manage Console
W Package Manage Console w
Default project:
wybieramy DB
Dodanie nowej migracji *opcjonalne*
add-migration InitialCreateDatabase
Wdrożenie migracji i zaktualizowanie bazy danych *wymagane*
update-database
Przechodzimy w konsoli do folderu pythonClient
Tworzymy wirtualne środowisko
python -m venv venv
Aktywujemy wirtualne środowisko
.\venv\Scripts\activate
Instalujemy wszystkie potrzebne biblioteki z pliku requirements.txt
pip install -r .\requirements.txt
Wymaga Windows Powershell i OpenSSL
Otwieramy Windows PowerShell jako administrator
Sprawdzamy klucz certifikatu z visual studio i zapisujemy certifakt do zmiennej:
# Krok 1: Pobierz thumbprint certyfikatu
$certInfo = dotnet dev-certs https --check
$certId = $certInfo | Select-String -Pattern "A valid certificate was found: ([A-F0-9]{40})" | ForEach-Object { $_.Matches[0].Groups[1].Value }
# Write-Output $certId powienien wyświetlić w konsoli 40-znakowy ciąg liter i cyfr będący thumbprintem certifikatu
Write-Output $certId
# Krok 2: Użyj zmiennej $certId, aby znaleźć certyfikat w magazynie certyfikatów
$cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object {$_.Thumbprint -eq $certId}
# Opcjonalnie: Wyświetl informacje o znalezionym certyfikacie
if ($cert) {
Write-Output "Certyfikat znaleziony:"
Write-Output $cert
} else {
Write-Output "Certyfikat z thumbprintem $certId nie został znaleziony."
}
Podajemy folder gdzie ma wyeksportować klucz i dowolne haslo :
$path = "D:\pathToProject\pythonClient"
Export-PfxCertificate -Cert $cert -FilePath "$path\localhost.pfx" -Password (ConvertTo-SecureString -String twojeDowolneHaslo -Force -AsPlainText)
Otwieramy openssl np. w C:\Program Files\Git\usr\bin\openssl.exe
pkcs12 -in D:\pathToProject\pythonClient\localhost.pfx -out D:\pathToProject\pythonClient\certificate.pem -nodes
Po wpisaniu polecenia należy podać wcześniej wybrane hasło w tym przykładzie było to twojeDowolneHaslo
Skrypt pythonowy znajduje się w pliku createFlights.py
w folderze pythonClient
Przykład w postmanie użycia servisu ReserveFlight: