相关疑难解决方法(0)

你如何在Clojure中创建一个Web应用程序?

我想这对于每天使用Java工作的绝大多数程序员来说都是一个奇怪的问题.我不.我知道Java-the-language,因为我从事过Java项目,但不是Java-the-world.我从未在Java中从头开始创建Web应用程序.如果我必须使用Python,Ruby,我知道去哪里(Django或Rails),但如果我想在Clojure中创建一个Web应用程序,不是因为我被迫生活在Java世界中,而是因为我喜欢语言,我想尝试一下,我应该使用哪些库和框架?

clojure

215
推荐指数
9
解决办法
5万
查看次数

组合路线背后的"大创意"是什么?

我是Clojure的新手,并且一直在使用Compojure编写基本的Web应用程序.不过,我正在用Compojure的defroutes语法碰壁,我认为我需要理解它背后的"如何"和"为什么".

看起来像Ring样式的应用程序以HTTP请求映射开始,然后只是通过一系列中间件函数传递请求,直到它被转换为响应映射,然后将其发送回浏览器.对于开发人员来说,这种风格似乎太"低级",因此需要像Compojure这样的工具.我可以看到在其他软件生态系统中需要更多的抽象,尤其是Python的WSGI.

问题是我不了解Compojure的方法.我们采用以下defroutesS表达式:

(defroutes main-routes
  (GET "/"  [] (workbench))
  (POST "/save" {form-params :form-params} (str form-params))
  (GET "/test" [& more] (str "<pre>" more "</pre>"))
  (GET ["/:filename" :filename #".*"] [filename]
    (response/file-response filename {:root "./static"}))
  (ANY "*"  [] "<h1>Page not found.</h1>"))
Run Code Online (Sandbox Code Playgroud)

我知道理解所有这些的关键在于一些宏观伏都教,但我还没有完全理解宏(还).我已经盯着defroutes源头很长一段时间了,但就是不明白!这里发生了什么?理解"大创意"可能会帮助我回答这些具体问题:

  1. 如何从路由功能(例如workbench功能)中访问Ring环境?例如,假设我想访问HTTP_ACCEPT标头或请求/中间件的其他部分?
  2. 什么是解构({form-params :form-params})?在解构时我可以使用哪些关键字?

我真的很喜欢Clojure,但我很难过!

clojure compojure

107
推荐指数
2
解决办法
2万
查看次数

在Clojure中开发RESTful Web服务的良好起点是什么?

我正在寻找轻量级的东西,至少应该支持以下功能:

  • 支持通过元数据轻松定义操作
  • 将请求中的参数提取到clojure映射或作为函数参数的包装器
  • 支持多种形式的身份验证(基本,表单,cookie)
  • 基于api方法元数据的基本授权
  • 会话对象包装在clojure映射中
  • 从REPL实时编码(无需重启服务器)
  • 将返回值自动序列化为json和xml
  • 有好的(可插入的)url参数处理(例如/ action/par1/par2而不是/ action?par1 = val1&par2 = val2)

我知道为这些选项中的每一个推出自己的微框架相对容易,但是如果像这样的东西已经存在,为什么要重新发明轮子呢?特别是如果它是:

  • 活跃项目的贡献者/用户数量不断增加
  • 至少有在线基础文档和教程.

rest frameworks web-services clojure

42
推荐指数
2
解决办法
8757
查看次数

推荐Clojure的Web框架

我的下一个大爱好黑客即将与Clojure为自己建立一个网站.我认为这是学习Clojure的一种好方法,但是试图提前计划我认为有一些过时的信息.

现在Noir看起来像一个胜利者.我对我应该尝试使用的任何建议持开放态度.

clojure

16
推荐指数
2
解决办法
1万
查看次数

标签 统计

clojure ×4

compojure ×1

frameworks ×1

rest ×1

web-services ×1