许多语言都有微框架,用于编写非常小的网站或Web服务,例如Flask for Python或Sinatra for Ruby。在吱吱声中,似乎没有任何等同物; Iliad,Seaside和AIDA都非常重,只需要一点点服务。完成此任务的首选方法是什么?直接将一个hanlder注入Comanche或Swazoo?
答案 0 :(得分:6)
“在这种特殊情况下,我确实有三个需要通过HTTP POST执行操作的URL;就是这样。”
对于非常简单的情况,您可以像这样注册(或子类)Kom的HttpService(来自类注释,请参阅更多信息/选项):
(HttpService on: 8080 named: 'Example Http Service')
onRequestDo: [ :httpRequest | SomeGlobal processRequest: httpRequest ];
start
答案 1 :(得分:5)
您也可以使用teapot。 Teapot是基于Zinc HTTP组件的微型Web框架,侧重于简单性和易用性。它不到500行代码,不包括测试。
Teapot on
GET: '/hi' -> 'Bonjour!';
GET: '/hi/<user>' -> [:req | 'Hello ', (req at: #user)];
GET: '/say/hi/*' -> (Send message: #greet: to: greeter);
start.
(ZnEasy get: 'http://localhost:1701/hi/user1') entity string. "Hello user1"
在过滤器之前,有可用的胡子模板,输出变换器。该框架已有详细记录。
答案 2 :(得分:3)
我想分享一下我认为更新的信息(截至2012年底)。
目前在Pharo 1.4 / 2.0中,HTTP客户端/服务器的事实标准似乎是Zinc HTTP Components。最新的Seaside版本(3.0)也改用了Zinc。
您当然可以直接使用Zinc来实现网络服务或提供网页。
特别注意课程ZnServer
并搜索Zn*Delegate
等课程(例如ZnDefaultServerDelegate
或ZnStaticFileServerDelegate
)
Seaside的最新版本包括对RESTful Web服务的支持。这可用于实现Web服务或提供Web页面。这很简单。
有关更多信息,请查看online Seaside book的“REST服务”一章。本章以实现Web服务为中心,但也适用于Web页面。
我也被告知过Ratpack,一个由Tim Felgentreff开发的类似sinatra的网络框架。有两个存储库。我认为github是最新的。见这里:
此信息来自我最近发布的similar question。
答案 3 :(得分:2)
你可以在Swazoo中为这样一个微型网站继承SwazooSite,但我认为你很快就会需要更多的功能,所以直接从这三个框架中的一个开始就是长期更好的选择。
它们很重,可能只是一种印象,缺乏对这些简单网站使用情况的更好记录。另外,如果你把框架看作blackbox,内部复杂但外部很简单,那么我会说所有Smalltalk web框架与其他web框架相比都非常简单。