我正在尝试将数据上载到sanicweb服务器。为此,我使用curl发出一个POST请求。我尝试在POST请求之后返回一些数据。这背后的基本原理是返回一些ID,现在代表服务器端的上传。但这似乎行不通。现在我在想:我的程序错了吗?curl不写入输出吗?或者这是sanic中的错误?有人能帮我吗?谢谢!在
下面是Python程序:import signal
import asyncio
import uvloop
import sanic
app = sanic.Sanic(__name__)
loop = asyncio.get_event_loop()
server = app.create_server(host="localhost", port=3002)
task = asyncio.ensure_future(server)
@app.post("/testUpload", stream=True)
async def api_testUpload(request):
async def doStream(response):
while True:
body = await request.stream.get()
if body is None:
break
sanic.response.json({
"result": "good!"
})
return sanic.response.stream(doStream)
signal.signal(signal.SIGINT, lambda s, f: loop.stop())
try:
loop.run_forever()
except:
loop.stop()
您可以这样调用curl:
^{pr2}$
下面是curl写入STDOUT的内容:* Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 3002 (#0)
> POST /testUpload HTTP/1.1
> Host: localhost:3002
> User-Agent: curl/7.47.0
> Accept: */*
> Content-Length: 334504
> Content-Type: application/x-www-form-urlencoded
> Expect: 100-continue
>
< HTTP/1.1 200 OK
< Keep-Alive: 5
< Transfer-Encoding: chunked
< Content-Type: text/plain; charset=utf-8
<
* Done waiting for 100-continue
* We are completely uploaded and fine
* Connection #0 to host localhost left intact
如您所见,将生成text/plain响应。这应该是一个包含我数据的application/json,不是吗?在