У меня есть flask сервер, который имеет API, подобный маршруту - @app.route("/api/v1.0/name/<string:name>", methods=["GET"])
this go и запрашивает базу данных пожарного хранилища, которую я настроил в GCP. Я настроил свой интерфейс, чтобы быть в стройном. это все еще немного, просто поле для ввода имени и кнопка для его поиска в моей базе данных.
при запуске моего веб-приложения (сначала я запускаю python .\server.py
, затем запускаю npm run dev
, что позволяет мне см. мою веб-страницу и взаимодействуйте с ней. все работает правильно.
моя проблема в том, что я не хочу, чтобы пользователи из inte rnet могли отправлять запрос напрямую: www.mywebsite.com/api/v1.0/name/alice
, который в настоящее время является действительный маршрут, и я действительно могу получить этот способ для непосредственного запроса к моей БД.
это три маршрута, которые у меня есть на flask сервере:
def index():
return send_from_directory("../client/public", "index.html")
@app.route("/<path:path>")
def home(path):
return send_from_directory("../client/public", path)
@app.route("/api/v1.0/name/<string:name>", methods=["GET"])
def get_by_name(name):
"""
retrieve by name value
"""
docs = db.collection(collection_name.where("name", "==", f"{name}").stream()
return_string = ""
for doc in docs:
if doc:
return_string += f"{doc.info}"
if not return_string:
return "No such name"
return return_string
и это мой svelte .app file:
<script>
export let db_result;
let name_query = "";
function getNameFromDB() {
fetch("/api/v1.0/name/" + name_query)
.then(d => d.text())
.then(d => (db_result = d));
}
</script>
<input bind:value={name_query}>
<button on:click={getNameFromDB}>show this name info</button>
{#if db_result}
<p>"name info: " {db_result}</p>
{/if}
Я не уверен, где должно быть это решение, на сервере flask в приложении svelte? Может быть, установить правило в firestore, если это возможно?