Как передать массив строк в fastapi в python - PullRequest
0 голосов
/ 18 марта 2020

Вот функция, которую я сделал:

@app.get("/shows/")
def get_items(q: List[str] = Query(None)):
    '''
    Pass path to function.
    Returns folders and files.
    '''
    results = {}

    query_items = {"q": q}
    if query_items["q"]:
        entry = PATH + "/".join(query_items["q"])
    else:
        entry = PATH

    if os.path.isfile(entry):
        return download(entry)

    dirs = os.listdir(entry + "/")
    results["folders"] = [
        val for val in dirs if os.path.isdir(entry + "/" + val)]
    results["files"] = [val for val in dirs if
                        os.path.isfile(entry + "/" + val)]
    results["path_vars"] = query_items["q"]

    return results

Идея состоит в том, чтобы передать массив строк, которые, по сути, образуют путь в функции, к файлу, и я могу получить некоторый массив из приложения для обслуживать файлы и отправлять этой функции массив строк, когда они пересекают папки. Но .. Я не могу понять, как отправить список параметров из чего-то вроде python запросов.

Вот пример функции, которую я написал.

def try_url():
    url = "http://192.168.0.16:8000/shows/"

    payload = {
        "q": ["downloads",
              "showname"]
    }
    headers = {}

    response = requests.request("GET", url, headers=headers, data=payload)

    print(response.text.encode('utf8'))

Api даже не принимает значение aq. Что мне не хватает? Это правильный путь для прохождения dirs? В формате url запрос выглядит следующим образом:

http://192.168.0.16:8000/shows/?q=downloads&q=foldername

Мне не подходит.

1 Ответ

0 голосов
/ 18 марта 2020

Я тупой, решение было просто передать параметры в вызов ...

payload = {
    "q" : ["downloads",
    "Brooklyn.Nine-Nine.S07E01.720p.HEVC.x265-MeGusta"]
}
headers = {
}

response = requests.request("GET", url, headers=headers, params = payload)

добавление "params" в запросах. Решение - это запрос.

...