flask 中,一个接口中如果想要去调用另一个接口怎么做?

2018-07-17 18:11:33 +08:00
 NeverBelieveMe
redirect 的话,我没看懂怎么传参,好像无法传 json 的参数。
现在就是用 requests 的方式来调用的。
想问问有没有什么好的方式?
9218 次点击
所在节点    Python
22 条回复
waterlaw
2018-07-17 18:17:14 +08:00
django 的话有个 urlconfig, 用 requests 好像会丢失请求信息。
pepesii
2018-07-17 18:21:26 +08:00
你那个是用 class based view 的方式写的,还是 method 的方式;
如果是 methodd 的方式,它的参数不就是 reqeust, 你直接调那个方法就行;
如果是 class based view 的话,好像是 class.view 方法调用,记不得了
NeverBelieveMe
2018-07-17 18:23:18 +08:00
@waterlaw requests 请求的话,用起来倒是还没遇到问题,只是觉得不顺心。
NeverBelieveMe
2018-07-17 18:26:10 +08:00
@pepesii 直接调用方法,request 参数怎么传呢
awanabe
2018-07-17 18:48:23 +08:00
路由里面的逻辑就不能抽成一个 util 方法 公共调用么?
为什么一定要在路由层互相调用呢?又不是跳转
STRRL
2018-07-17 19:03:27 +08:00
mvc 要分层
pepesii
2018-07-17 19:37:35 +08:00
@NeverBelieveMe
大概这样
假如你的定义是:
@route(xxx):
def func1():
# 干点啥

@route(xx):
def func2():
return func1(request)
sikariba
2018-07-17 19:43:26 +08:00
直接 redirect 过去里面应该是可以访问 request 上下文的吧
heynumber
2018-07-17 19:49:43 +08:00
@pepesii 这样子能的话就太牛逼了!
rogwan
2018-07-17 19:54:22 +08:00
楼主说说实际的应用场景?针对具体情况,应该有解决方案的
GoLand
2018-07-17 20:10:49 +08:00
@route("/patha")
@route("/pathb")
def view_func():
pass
gemini
2018-07-18 11:39:45 +08:00
NeverBelieveMe
2018-07-19 11:44:12 +08:00
@awanabe 我就是想知道有没有这种方式。能抽象出来的事情我也知道的。
NeverBelieveMe
2018-07-19 11:44:51 +08:00
@rogwan 我就是想知道有没有这种直接调用另外一个接口的方法。实际场景还没有遇到过这种问题。
NeverBelieveMe
2018-07-19 11:46:10 +08:00
@heynumber @pepesii 这个方法很明显不行。func1 都没有设定参数。
NeverBelieveMe
2018-07-19 11:47:08 +08:00
@sikariba 上下文我看了一下,没看懂。我再仔细看看。
NeverBelieveMe
2018-07-19 11:47:23 +08:00
@gemini 传参的问题不好搞定。
awanabe
2018-07-19 12:05:30 +08:00
@sikariba
@NeverBelieveMe
redirect 怎么可能有 request 上下文...
redirect 使用的 http 的 301,302...相当于新的请求...只会带单次请求的数据...

实在不行...就存在 session 里面, 用 session_id 去取数据就行了
awanabe
2018-07-19 12:07:29 +08:00
@NeverBelieveMe
你这种使用方法有违这个框架的设计理念...
为什么一定要走这条路呢?

上面也有人说..要分层....每一层有自己的理念和作用...
非要违背去做.....

这种深究有点奇怪...
pepesii
2018-07-19 12:28:23 +08:00
@NeverBelieveMe 额,我都说了,是大概,我没有写全而已,你 def 函数的时候肯定是有 request 的参数的嘛,我只是给了大概的伪代码

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/471718

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX