在Python中将请求转发到另一个API(Rust)Robyn

yyyllmsg  于 2023-02-06  发布在  Python
关注(0)|答案(1)|浏览(364)

我正在使用FastAPI接收一个JSON文件,该文件将成为API请求的主体.. Orwell和Good到目前为止。现在我想应用相同的方法,但Robyn构建在铁 rust 上,而不是FastAPI。在标记为??的位置调用API没有获得任何乐趣。
我需要考虑什么事情(文档很少)robyn是一个人剪的,还是我漏掉了什么?

from robyn import Robyn, jsonify

app = Robyn(__file__)

@app.post("/yt")
async def json(request):
    body = request["body"]
    outurl = "https://translate.otherapi.com/translate/v1/translate"
    headers = {
            "Content-Type": "application/json",
            "Authorization": "Bearer {0}".format(TOKEN)
        }
    ?? response_data = await call_api(data)
    return response_data['translations'][0]

app.start(port=5000)

使用FastAPI:

import aiohttp
import aiofiles
import json
import requests 
from fastapi import FastAPI, Header, Depends, HTTPException, Request

app = FastAPI()

async def call_api(data):
    async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=False)) as session:
        async with session.post(url, headers=headers, json=data) as resp:
            response_data = await resp.json()
    return response_data

@app.post("/yt")
async def root(request:Request):
    data = await request.json()
    file_path = "data.json"
    await write_json_to_file(data, file_path)
    data = await read_json_from_file(file_path)
    response_data = await call_api(data)
    return response_data['translations'][0]

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8001)
rjjhvcjd

rjjhvcjd1#

Robyn的作者在这里。我无法理解你试图在这里实现什么。但是,有一个问题,request["body"]目前返回一个字节字符串数组。
您需要将代码更改为:

import json
@app.post("/yt")
async def json(request):
    body = bytearray(request["body"]).decode("utf-8")
    data = json.loads(body)
    outurl = "https://translate.otherapi.com/translate/v1/translate"
    headers = {
            "Content-Type": "application/json",
            "Authorization": "Bearer {0}".format(TOKEN)
        }
    response_data = await call_api(data)
    return response_data['translations'][0]

这是我不太喜欢的特性。我们希望在接下来的几个版本中修复这个问题。
我希望这对你有帮助:D

相关问题