@app.post('/snapshot')
def snapshot(
url: str = Form()
):
proxy = get_proxy()
with ChromeBrowser(driver_path=driver_path, proxy_string=proxy) as browser:
# 截图
logger.info(f'获得代理: {proxy}')
jpg_stream: bytes = browser.snapshot(url)
logger.debug(f'获取截图, 大小为 {round(len(jpg_stream)/1024,3)} KBytes')
image_stream = BytesIO(jpg_stream)
return StreamingResponse(image_stream, media_type="image/jpg")
有上面的接口,response body 不是一般的 json,而是一个图片流,所以我要怎么声明,才能让访问 /docs 的时候,让别人可以知道这个接口返回的是 image/jpg 而不是 json
不需要声明,响应头中的
Content-Type
就会告诉客户端你的响应是什么类型。docs 里的 media_type 是通过 response_class 实现的,需要自定义 response_class 才能修改。