-
-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
response-for
returns nil
#154
Comments
Hi, I think the problem comes from here:
The default interceptors in Note that your interceptors will run after the martian interceptors, which include setting and validating the headers schema, so if you set the header schema but only populate the extra data after that interceptor as run then you will get the error above. Hope this helps |
Thanks, that's a huge help! I'm using (defn my-service
[{:keys [base-url api-key http-timeout]
:or {http-timeout 30000}}]
(martian-http/bootstrap
base-url
[{:route-name :get-item
:produces ["application/json"]
:consumes ["application/json"]
:headers-schema {:x-api-key sch/Str}
:path-parts ["/api/" :id]
:path-schema {:id sch/Str}
:method :get}]
{:interceptors (concat [{:name ::add-api-key
:enter (fn [ctx]
(update-in ctx [:request :headers]
assoc :x-api-key api-key))}]
martian-http/default-interceptors)}))
(let [base-url "https://www.my-service.com"
api-key "mochi"]
(fake/with-fake-routes-in-isolation
{"https://www.my-service.com/api/123"
{:get (fn [req]
{:status 200
:body (cheshire.core/generate-string {:a "b"})})}}
(martian/response-for (my-service {:base-url base-url
:api-key api-key})
:get-item
{:id "123"})))
;; Could not coerce value to schema: {:x-api-key missing-required-key}
;; {:type :schema-tools.coerce/error,
;; :schema {:x-api-key java.lang.String},
;; :value {:id "123"},
;; :error {:x-api-key missing-required-key}} I only added Thanks so much for the help! |
Hi, Yes I was suggesting you reorder them as you have done, I expected that to work. It's possible Martian's headers interceptor is not merging properly. It's interesting that the value it sees is the map with your id. This means of course that you could pass the API key in the arguments map to martian, but you probably don't want to arrange your prod code that way. I'll try to find time to look into this. |
I'm struggling to get
response-for
to work when I have an interceptor that adds some headers.I also tried adding
:headers-schema {:x-api-key sch/Str}
but it just saysCould not coerce value to schema: {:x-api-key missing-required-key}
and:headers-schema {(sch/optional-key :x-api-key) sch/Str}
doesn't change anything.The text was updated successfully, but these errors were encountered: