Get the host address programmatically in webnoir
I'm developing a Clojure webnoir
app and I need to construct a c开发者_运维知识库allback url (for Twitter oauth) that is different in dev-mode than it is in production mode. In dev-mode it needs to be localhost:8080/smth
and on production (heroku) obviously something else like http://smooth-lightning-xxxx.herokuapp.com/smth
. How do I get the localhost:8080
part programmatically in a defpage
?
I haven't tried it, but I think this should work
(ns your-namespace
(:require noir.request))
and then in defpage:
(let [server-name (:server-name (noir.request/ring-request))]
...)
You can also looke at noir middleware if you need to tweak requests and responses a lot.
In the end I solved it using this, inside a defpage, with noir.request
required as request
:
((:headers (request/ring-request)) "host")
精彩评论