мой вопрос: как опубликовать вывод, используя json в качестве бэкэнда? просто нужно опубликовать перевод текста моя внутренняя кодировка
from fastapi import FastAPI, Form, Depends, Request
from fastapi.templating import Jinja2Templates
from googletrans import Translator
import uvicorn
#connect to translator
translator = Translator(service_urls=['translate.googleapis.com'])
app = FastAPI(debug=True)
templates = Jinja2Templates(directory = "template")
@app.get("/")
async def home(request: Request):
return ('index.html',{'request': request})
@app.post("/")
async def trans(request: Request):
text = request.get('Input_text')
lang = request.get('lang_select')
# detect language text
#dt = translator.detect(text)
# detect input language
#dt2 = dt.lang
# translate the text
translated = translator.translate(text,lang)
out_text = translated.text
pronouce = out_text.pronunciation
#transData = {'request': request ,'text_translate': out_text,'text_pronouce':pronouce}
return ({'request': request ,'text_translate': out_text,'text_pronouce':pronouce})
if __name__= = "__main__":
uvicorn.run(app,host = "127.0.0.1",port=8000)
и формат json для публикации вывода
{
"text_translate": "out_text"
"text_pronouce":"pronouce"
}
ясно, что мой пост-возврат заставляет этот код работать неправильно. Любая помощь или решение приветствуется ... застрял на несколько дней
где вы вызываете этот метод POST?
@HarshanaSerasinghe, извините, теперь отредактировал его с полным кодированием, метод post и get используется в html, а быстрый API уже покрыт app.get и app.post в качестве значения метода ... все еще получаю эту ошибку, хотя "ValueError: [TypeError ("'' объект re.Pattern не является итерируемым"), TypeError('аргумент vars() должен иметь атрибут dict')]"
Отвечает ли это на ваш вопрос? Как вернуть данные в формате JSON с помощью FastAPI?
Попробуйте закодировать ответ с помощью jsonable_encoder
, а затем вернуть данные с помощью JSONResponse
Код:
from fastapi import FastAPI, Form, Depends, Request
from fastapi.responses import JSONResponse
from fastapi.encoders import jsonable_encoder
from fastapi.templating import Jinja2Templates
from googletrans import Translator
import uvicorn
#connect to translator
translator = Translator(service_urls=['translate.googleapis.com'])
app = FastAPI(debug=True)
templates = Jinja2Templates(directory = "template")
@app.get("/")
async def home(request: Request):
return ('index.html',{'request': request})
@app.post("/")
async def trans(request: Request):
text = request.get('Input_text')
lang = request.get('lang_select')
# detect language text
#dt = translator.detect(text)
# detect input language
#dt2 = dt.lang
# translate the text
translated = translator.translate(text,lang)
out_text = translated.text
pronouce = out_text.pronunciation
#transData = {'request': request ,'text_translate': out_text,'text_pronouce':pronouce}
data = jsonable_encoder({'text_translate': out_text,'text_pronouce':pronouce})
return JSONResponse(content=data)
if __name__= = "__main__":
uvicorn.run(app,host = "127.0.0.1",port=8000)
Какую отдачу вы получаете сейчас?