Чтобы получать запросы POST от приложения SwiiftUI, вам необходимо запустить веб-сервер python, например flask.
1. Создайте модуль (файл) python примерно так:
app.py
from flask import Flask
from flask import make_response
import mysql.connector
from flask import request
server_name = "localhost"
username = "flask"
password = "flask"
dbname = "flask"
# Create and check connection
try:
conn = mysql.connector.connect(
host=server_name,
user=username,
passwd=password,
database=dbname
)
print("Connection OK")
except e:
print("Connection failed: ", e)
mycursor = conn.cursor()
app = Flask(__name__)
@app.route('/', methods=['POST'])
def register():
name = request.form['a']
age = request.form['b']
sql = "INSERT INTO users (name, age) VALUES (%s, %s)"
val = (name, age)
try:
mycursor.execute(sql, val)
conn.commit()
conn.close()
except e:
print("Error: ", e)
return make_response("Success!", 200)
2. Убедитесь, что у вас установлены необходимые библиотеки:
pip install flask
pip install mysql-connector-python
Вам необходимо убедиться, что ваша MySQL база данных работает, и что вы вводите реальные учетные данные для базы данных в коде. (По умолчанию MySQL порт = 3306)
3. Запустите flask веб-сервер разработки
export FLASK_APP=app.py # OR set FLASK_APP=app.py (for Windows)
python -m flask run
Ваш сервер должен начинаться с: http://localhost:5000
Замените: http://YOUR FILE PATH
на http://localhost:5000/
в вашем примере быстрого кода и альт!
ОБНОВЛЕНИЕ: Я протестировал это, и он работает. Вот код swiftUI, который я создал в почтальоне:
import Foundation
var semaphore = DispatchSemaphore (value: 0)
let parameters = "a=Lance&b=35"
let postData = parameters.data(using: .utf8)
var request = URLRequest(url: URL(string: "http://localhost:5000/")!,timeoutInterval: Double.infinity)
request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
request.httpMethod = "POST"
request.httpBody = postData
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
print(String(describing: error))
return
}
print(String(data: data, encoding: .utf8)!)
semaphore.signal()
}
task.resume()
semaphore.wait()