Fork me on GitHub
#reitit
<
2021-09-19
>
cvetan12:09:48

hi, guys, I just started with clojure and luminus

cvetan12:09:00

I am trying to develop some rest API with swagger

cvetan12:09:20

I can't figure out how to define route that returns list of object of certain type in json

cvetan12:09:29

and I can't find that in documentation

cvetan12:09:47

if someone can point me in right direction I would appreciate it

cvetan13:09:59

I tried defining sample route like this:

cvetan13:09:24

["example"
    {:swagger {:tags ["Example API"]}}

    [""
     {:get  {:summary    "Return sample response"
             :responses  {200 {:body {:message str}}}
             :handler    (fn []
                           {:status 200
                            :body   {:message "Sample response"}})}}]]

cvetan13:09:37

inside services routes

cvetan13:09:47

however wheneven I try it in swagger I get error:

cvetan13:09:05

clojure.lang.ArityException: Wrong number of args (1) passed to: flashscore-scrapper-api.routes.services/service-routes/fn--31569
	at clojure.lang.AFn.throwArity(AFn.java:429)
	at clojure.lang.AFn.invoke(AFn.java:32)
	at reitit.ring.coercion$fn__16352$fn__16354$fn__16355.invoke(coercion.cljc:64)
	at muuntaja.middleware$wrap_format_request$fn__8991.invoke(middleware.clj:114)
	at reitit.ring.coercion$fn__16365$fn__16367$fn__16368.invoke(coercion.cljc:80)
	at muuntaja.middleware$wrap_format_response$fn__8995.invoke(middleware.clj:132)
	at muuntaja.middleware$wrap_format_negotiate$fn__8988.invoke(middleware.clj:96)
	at ring.middleware.params$wrap_params$fn__9870.invoke(params.clj:67)
	at reitit.ring$ring_handler$fn__16175.invoke(ring.cljc:329)
	at clojure.lang.AFn.applyToHelper(AFn.java:154)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.lang.AFunction$1.doInvoke(AFunction.java:31)
	at clojure.lang.RestFn.invoke(RestFn.java:408)
	at clojure.lang.Var.invoke(Var.java:384)
	at ring.middleware.reload$wrap_reload$fn__5371.invoke(reload.clj:39)
	at selmer.middleware$wrap_error_page$fn__5386.invoke(middleware.clj:18)
	at prone.middleware$wrap_exceptions$fn__5628.invoke(middleware.clj:169)
	at ring.middleware.flash$wrap_flash$fn__9019.invoke(flash.clj:39)
	at ring.adapter.undertow.middleware.session$wrap_undertow_session$fn__9562.invoke(session.clj:77)
	at ring.middleware.keyword_params$wrap_keyword_params$fn__9656.invoke(keyword_params.clj:53)
	at ring.middleware.nested_params$wrap_nested_params$fn__9714.invoke(nested_params.clj:89)
	at ring.middleware.multipart_params$wrap_multipart_params$fn__9846.invoke(multipart_params.clj:171)
	at ring.middleware.params$wrap_params$fn__9870.invoke(params.clj:67)
	at ring.middleware.cookies$wrap_cookies$fn__9335.invoke(cookies.clj:214)
	at ring.middleware.absolute_redirects$wrap_absolute_redirects$fn__10058.invoke(absolute_redirects.clj:47)
	at ring.middleware.resource$wrap_resource_prefer_resources$fn__9906.invoke(resource.clj:25)
	at ring.middleware.content_type$wrap_content_type$fn__10006.invoke(content_type.clj:34)
	at ring.middleware.default_charset$wrap_default_charset$fn__10030.invoke(default_charset.clj:31)
	at ring.middleware.not_modified$wrap_not_modified$fn__9972.invoke(not_modified.clj:61)
	at ring.middleware.x_headers$wrap_x_header$fn__9596.invoke(x_headers.clj:22)
	at ring.middleware.x_headers$wrap_x_header$fn__9596.invoke(x_headers.clj:22)
	at ring.middleware.x_headers$wrap_x_header$fn__9596.invoke(x_headers.clj:22)
	at flashscore_scrapper_api.middleware$wrap_internal_error$fn__10132.invoke(middleware.clj:18)
	at ring.adapter.undertow$undertow_handler$fn$reify__20315.handleRequest(undertow.clj:40)
	at io.undertow.server.session.SessionAttachmentHandler.handleRequest(SessionAttachmentHandler.java:68)
	at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387)
	at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:841)
	at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
	at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558)
	at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1449)
	at java.base/java.lang.Thread.run(Thread.java:829)

cvetan13:09:33

what should be done, because default sample routes that came with generated projects work

cvetan13:09:45

it also works when I copy them in the same manner to new routes

cvetan13:09:59

howevet this custom route of mine without arguments doesn't work

cvetan19:09:54

also how do I define response value that is list of certain json objects?

GGfpc21:09:01

Are there API docs that show all possible parameters to a route and what they mean?