使用Python的bottle
模块,我想在内部处理请求,而不需要从外部调用来电。
假设我在localhost:8080
运行了以下最小瓶子应用程序,并且我想从foo
内部调用bar
。一种方法是:
from bottle import *
import requests
@get('/foo')
def foo()
return 'foo'
@get('/bar')
def bar()
return requests.get('http://localhost:8080/foo').text
app = default_app()
run(app, port=8080)
现在我想做的是使用requests
摆脱HTTP调用。我只想喜欢使用类似的东西:
@get('/bar')
def bar()
return bottle.process_internally('/foo', 'GET')
对我而言,这将有两大优势:
requests.get
会导致死锁)。我的真正动机是希望以JSON数组的形式处理包含请求URL的批处理。非常无效,但却很快实施。
这有可能吗?
答案 0 :(得分:1)
你可能想要考虑“瘦控制器”(和瘦一切)范例。
有了这个概念,你的所有代码逻辑都在控制器以外的其他地方(可能在你的服务或模型类中)。
如果您的控制器中只有极少量的逻辑,那么您的foo
和bar
路由可以在您的模型/服务中调用相同的功能,您无需诉诸你的路线相互呼唤。
有一些框架支持内部重定向(Ruby的Sinatra就是其中之一),但我一直认为这些是一种黑客的解决方法,因为它不能以灵活的方式编写代码。