Python 在browser-Flask上返回json
我有这个函数,它在控制台上返回一个结果:Python 在browser-Flask上返回json,python,json,flask,Python,Json,Flask,我有这个函数,它在控制台上返回一个结果: numbers_to_add = list(range(10000001)) try: req = request.Request('http://127.0.0.1:5000/total' , data=bytes(json.dumps(numbers_to_add), 'utf_8') , headers={'Content-Type': 'application/json'} , method
numbers_to_add = list(range(10000001))
try:
req = request.Request('http://127.0.0.1:5000/total'
, data=bytes(json.dumps(numbers_to_add), 'utf_8')
, headers={'Content-Type': 'application/json'}
, method='POST')
result = json.loads(request.urlopen(req).read(), encoding='utf_8')
print(json.dumps(result, indent=4))
except Exception as ex:
print(ex)
它返回范围10000001
现在,我想在浏览器请求时返回此内容,在Flask应用程序中,我尝试了以下方法:
def hardCoded():
numbers_to_add = list(range(10000001))
try:
req = request.Request('http://127.0.0.1:5000/total'
, data=bytes(json.dumps(numbers_to_add), 'utf_8')
, headers={'Content-Type': 'application/json'}
, method='POST')
result = json.loads(request.urlopen(req).read(), encoding='utf_8')
print(json.dumps(result, indent=4))
except Exception as ex:
print(ex)
class rangeNumbers(Resource):
def get(self, range):
return {'data': directSum.hardCoded(range)}
api.add_resource(rangeNumbers, '/range/<range>')
有什么想法吗?如果
range
是要返回的n
号码,在本例中是10000001
,那么您将需要执行以下操作:
在您的directSum
文件中:
def hardCoded(rng):
numbers_to_add = list(range(rng))
try:
# ... rest of code ...
在主文件中:
class rangeNumbers(Resource):
def get(self, rng):
return {'data': directSum.hardCoded(rng)}
当您调用rangeNumbers().get
时,您可以执行以下操作:
rng_num = rangeNumbers()
rng_num.get(10000001)
注意,我将变量
范围
更改为rng
。即使是在本地范围内,也不要掩盖内置的
名称,这符合您的最佳利益。否则调用range(range)
会给你带来无尽的痛苦。这里什么是directSum
?hardCoded
实际上是一个类上的方法吗?嗨,对不起,directSum是一个硬编码方法所在的文件,我只是把所有的东西都放在这里,现在我回想起来,硬编码实际上不在类上。。。但是我有另一个方法,它工作得很好,不在类中…这里最明显的错误是你试图将范围
作为参数传递给硬编码()
,但它不接受任何参数,这就是解释程序抱怨的原因。如果range(10000001)
应该是动态的,那么作为参数传入(def hardCoded(range):
)非常感谢,只是一个问题,对不起,我得到了这个api。添加资源(rangeNumbers,“/range/”),我需要在哪里传递这个rng\u num变量?它说'TypeError:'str'对象不可调用',在这种情况下,我认为您应该调用api.resource('/range/').get(10000001)
。我对flask
不太熟悉,只是稍微摆弄了一下,所以我不知道get()
是否是默认的实现方法。好的,谢谢,如果我有更多的麻烦,我会提出一个新问题
rng_num = rangeNumbers()
rng_num.get(10000001)