Как вернуть число с плавающей запятой (или целое число) с помощью sanic API?

Я создаю простой Sanic REST API, но не могу понять, как вернуть числовые данные. После просмотра документов оказалось, что вы можете вернуть только json , html, text и т. д., но не float или int.

Я следую основному примеру в документах, за исключением того, что переключил возврат на число с плавающей запятой:

from sanic import Sanic
from sanic.response import json

app = Sanic()

@app.route("/")
async def test(request):
    return 1.1

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

Однако он отлично работает, если оператор return имеет значение return json({"hello": "world"}). Почему я не могу вернуть поплавок? Я могу вернуть его как return text(1.1), но тогда клиент, который вызывает его, получит его как str (в отличие от float)?


person python_crypto_questions    schedule 27.01.2019    source источник


Ответы (1)


Просто JSON ваш номер.

>>> import json
>>> s = json.dumps(543.34)
>>> s
'543.34'
>>> json.loads(s)
543.34

С Саничем:

from sanic import Sanic, response
from sanic.response import json

app = Sanic()

@app.route("/")
async def test(request):
    return response.json(1.1)

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)
person Alex Python    schedule 27.01.2019
comment
Если вы хотите вернуть json.dumps(), пользователь все равно получит его как JSON. Могу ли я просто отправить его как поплавок? - person python_crypto_questions; 27.01.2019
comment
Ну, вы используете HTTP, а не протокол передачи с плавающей запятой. - person Alex Python; 27.01.2019