Browse Source

add REST API py

master
Jakub Škrabánek 1 year ago
parent
commit
1f9786c1fb
  1. 3
      restAPIpy/.idea/.gitignore
  2. 6
      restAPIpy/.idea/inspectionProfiles/profiles_settings.xml
  3. 10
      restAPIpy/.idea/misc.xml
  4. 8
      restAPIpy/.idea/modules.xml
  5. 10
      restAPIpy/.idea/restAPIpy.iml
  6. 19
      restAPIpy/client.py
  7. 43
      restAPIpy/client_v2.py
  8. 40
      restAPIpy/server.py
  9. 17
      restAPIpy/templates/index.html

3
restAPIpy/.idea/.gitignore

@ -0,0 +1,3 @@
# Default ignored files
/shelf/
/workspace.xml

6
restAPIpy/.idea/inspectionProfiles/profiles_settings.xml

@ -0,0 +1,6 @@
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>

10
restAPIpy/.idea/misc.xml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Black">
<option name="sdkName" value="Python 3.12 (restAPIpy)" />
</component>
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.12 (restAPIpy)" project-jdk-type="Python SDK" />
<component name="PyCharmProfessionalAdvertiser">
<option name="shown" value="true" />
</component>
</project>

8
restAPIpy/.idea/modules.xml

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/restAPIpy.iml" filepath="$PROJECT_DIR$/.idea/restAPIpy.iml" />
</modules>
</component>
</project>

10
restAPIpy/.idea/restAPIpy.iml

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>

19
restAPIpy/client.py

@ -0,0 +1,19 @@
import requests
url = "http://localhost:8000/api/data"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
print(data)
else:
print("Chyba:", response.status_code)
teplota = data["teplota"]
print(f"Teplota: {teplota}°C")
vlhkost = data["vlhkost"]
print(f"Vlhkost: {vlhkost}%")
led_stav = data["led_stav"]
print(f"Stav LED: {led_stav}")

43
restAPIpy/client_v2.py

@ -0,0 +1,43 @@
import requests
base_url = "http://localhost:8000/api"
options = {
"1": "Zobrazit vše",
"2": "Zobrazit teplotu",
"3": "Zobrazit vlhkost"
}
while True:
for key, value in options.items():
print(f"{key}:{value}")
vyber = input("Zadejte cislo volby:")
if vyber in options:
break
else:
print("Spatna volba")
if vyber == "1":
url = f"{base_url}/data"
elif vyber == "2":
url = f"{base_url}/teplota"
elif vyber == "3":
url = f"{base_url}/vlhkost"
response = requests.get(url)
if response.status_code == 200: #uspěšné připojení
data = response.json()
if vyber == "1":
print(data)
if vyber == "2":
teplota = data["teplota"]
print(f"Teplota: {teplota}°C")
if vyber == "3":
vlhkost = data["vlhkost"]
print(f"Vlhkost: {vlhkost}%")
else:
print("Chyba:", response.status_code)

40
restAPIpy/server.py

@ -0,0 +1,40 @@
from flask import Flask, jsonify, render_template
import random
#vytvoření Flask aplikace
app = Flask(__name__)
def generuj_data():
teplota = random.randint(20,28)
vlhkost = random.randint(40,80)
led_stav = bool(random.randint(0,1))
return {
"nazev": "hodnota",
"teplota": teplota,
"vlhkost": vlhkost,
"led_stav": led_stav
}
@app.route("/")
def index():
#vytvoříme si složku templates a vložíme do ní index.html
return render_template("index.html")
@app.route("/api/data",methods=["GET"])
def get_data():
data = generuj_data()
return jsonify(data)
@app.route("/api/teplota",methods=["GET"])
def get_teplota():
data = generuj_data()
return jsonify({"teplota":data["teplota"]})
@app.route("/api/vlhkost",methods=["GET"])
def get_vlhkost():
data = generuj_data()
return jsonify({"vlhkost":data["vlhkost"]})
if __name__ == "__main__":
app.run(debug=True, port=8000)

17
restAPIpy/templates/index.html

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<title>REST API PYTHON</title>
</head>
<body>
<h1>Vítejte na REST API v pythonu</h1>
<ul>
<li>/api/data - pro všechny data</li>
<li>/api/teplota - získaní hodnoty teploty</li>
<li>/api/vlhkost - získaní hodnoty vlhkosti</li>
</ul>
</body>
</html>
Loading…
Cancel
Save