如何使用FastAPI将HTML请求中的字符串转换为Python对象



我正在制作我的第一个API;我们非常感谢为改进我的流程提供的任何建议。

我计划将类似JSON的字符串传递到HTML请求中,然后传递给下面的这个FastAPI微服务

@app.get("/create/{value}")
def createJSON(value:str):
person_json = value.strip()
fileName = person_json['Value']['0'] + person_json['Value']['1']
with open('%s.JSON','w') as writeFile:
writeFile.write(string)
return "Person has been created"

我的HTTP请求如下所示:

http://127.0.0.1:8000/create/{"Key":{"0":"name","1":"grad_year","2":"major","3":"quarter","4":"pronoun","5":"hobbies","6":"fun_fact","7":"food","8":"clubs","9":"res"},"Value":{"0":"adfasdfa","1":"adf'asd","2":"asd","3":"fads","4":"fa","5":"sdfa","6":"df","7":"asd","8":"fa","9":"df"}}

但是,在执行此操作时。传递的值是字符串。从而使代码的fileName部分变得无用。如何将其转换为Python dict?我试过使用.strip((,但没有用。

您走错了路,这样的请求本质上应该建模为POST或PUT请求。这将允许您在请求的主体中发送JSON,并在python中作为dict获得它。你可以在这里看到

即使您想在GET请求中传递数据,也有查询参数

回到最初的疑问,您必须使用json.loads()来解析json数据,并将其加载到pythondict中,然后您可以在之后转储任何您喜欢的文件。

我建议使用请求库

import requests
url = 'http://127.0.0.1:8000/create/'
params = dict(
name = 'Josh',
grad_year = '1987',
major = 'computer science',
quarter = '3'
)
resp = requests.get(url=url, params=params)
data = resp.json()

然后在这里查看如何处理JSON响应内容:https://requests.readthedocs.io/en/master/user/quickstart/#json-响应内容

不过,我发布的代码中的dict与您试图发送的JSON不同。我想你有一个特殊的原因;键";数组的名称多于一个";值";这些特定名称的值的数组。但如果没有,我建议你使用字典,这样你就可以做一些事情,比如:

fileName = person_json['name'] + person_json['grad-year']

最新更新