Hi Ganesh, The function called wrap-content-type takes in another function (handler) and a content-type (string), and returns a function. The function that it returns takes in a request, which is a Clojure map, that has the keys that you see in the ring docs here: https://github.com/ring-clojure/ring/wiki/Concepts#requests
That function that is returned, that takes in a request, is known as middleware. It calls the handler passed into wrap-content-type, which is another handler function (returns a ring response), then attaches the content type passed into wrap-content-type to the headers of the ring response. So the response might then look like {:headers {"Content-Type": "application/json"}} (if "application/json" was passed as content-type), along with whatever other keys/values were on the response before it was passed into the function. FYI, the #beginners channel of the Clojurians Slack is super helpful for general questions like this. Happy coding, Brandon On Sun, Dec 13, 2020 at 7:08 AM Ganesh Neelekani <ganeshneelek...@gmail.com> wrote: > Hello Team, > > I am a moderate Clojure user and now I planned to explore more Clojure, I > used to > write different functions every time where I could write asynchronous > functions. > > As came from object-oriented background and trying to understand > asynchronous functions > > I took some example on using fn functions > > ((fn [& nums] (/ (apply + nums) (count nums))) 1 2 3 4) > > In the above statement, 1 2 3 4 is added after the function defined as > input, > But in the below function I did not understand how fn behaves, what is the > input for a request, Or what is the methodology , Basically I am not > understanding the flow, > > (defn wrap-content-type [handler content-type] > (fn [request] > (let [response (handler request)] > (assoc-in response [:headers "Content-Type"] > content-type)))) > > Can someone help me, please? > > Thanks, > Ganesh N > > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/clojure/c460dada-9752-4f7f-931d-3766fe64411cn%40googlegroups.com > <https://groups.google.com/d/msgid/clojure/c460dada-9752-4f7f-931d-3766fe64411cn%40googlegroups.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/clojure/CAB_6y6E8_ACLJNR9zDmxPt0Dt9e%3D-QyJS71tuJv1DJ7bXbr8TQ%40mail.gmail.com.