inconsistency in resource vs. macro based route definition behaviour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 35/100
Piste de recherche
Reproduisez la requête curl POST /foo, puis comparez la route basée sur une macro avec la définition de context/resource. Commencez par la validation du paramètre de body de la route du resource et le middleware personnalisé text/plain ; c’est terminé lorsque les deux formes de route traitent la même requête de manière cohérente sans l’erreur de validation String nil.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
When making:
curl -X POST \
'http://localhost:7777/foo?rule_name=foo.logic&force_overwrite=true&version=1.1' \
-H 'accept: application/json' \
-H 'cache-control: no-cache' \
-H 'content-type: text/plain' \
-d 'bla'
the following definition behaves correctly:
(POST "/foo" []
:middleware [[muuntaja.middleware/wrap-format
(muuntaja/create
(assoc-in muuntaja/default-options
[:formats "text/plain"] text-plain-format))]]
:query-params [version :- String, rule_name :- String, force_overwrite :- String]
:body [b s/Str]
:return s/Any
(ok
{:ok b})
on other hand this one is failing
(context "/foo" []
(resource {
:post {
:middleware [[muuntaja.middleware/wrap-format
(muuntaja/create
(assoc-in muuntaja/default-options
[:formats "text/plain"] text-plain-format))]]
:parameters {:body-params String
:query-params {:version s/Str
:rule_name s/Str
:force_overwrite s/Str}}
:consumes ["text/plain"]
:responses {http-status/ok {:schema s/Any}}
:handler (fn [{body :body-params {:keys [version rule_name]} :path-params}]
(ok
{:foo body}
))}}))
the error is:
{
"schema": "java.lang.String",
"errors": "(not (instance? java.lang.String nil))",
"type": "compojure.api.exception/request-validation",
"coercion": "schema",
"value": null,
"in": [
"request",
"body-params"
]
}
I use this auxiliary fun:
(def text-plain-format
{:decoder [(fn make-json-decoder [options]
(fn [x ^String charset]
(if (string? x)
x
(slurp (InputStreamReader. ^InputStream x charset)))))]
:encoder [(fn make-json-encoder [options]
(fn [data ^String charset]
(ByteArrayInputStream. (.getBytes data charset))))]})
- Langage dominant
- Clojure
- Étoiles
- 1.1k
- Forks
- 145
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Aucun modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de metosin/compojure-api
-
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
metosin/compojure-api#489 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
metosin/compojure-api#468 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 20/100
metosin/compojure-api#467 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
metosin/compojure-api#464 ·
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
metosin/compojure-api#463 · 3 commentaires ·
Toutes les issues de metosin/compojure-api
Issues similaires
-
Permissioned transactions fetch each entity once per tx-step, producing huge permission-check queriesPeut-être pris @verveguy l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 Une demi-journée Accessibilité débutants 84/100
clojure-lsp/clojure-lsp#2502 ·
Les mainteneurs répondent en général sous 1 jour
-
Sessions are never closedOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
Les mainteneurs répondent en général sous 1 jour