2014-04-23 3 views
0

Je travaille sur une API Lisp utilisant RESTAS, Hunchentoot et CL-JSON. J'ai un itinéraire défini comme ceci:Comment gérer les post-données brutes dans Hunchentoot

(define-route user/register ("/user/register" :method :post) 
    (let* ((raw-data (hunchentoot:raw-post-data :force-text t)) 
    (params (json:decode-json-from-string))) 
    (format t "List of parameters: ~a~%" params) 
    )) 

Maintenant, j'utilise Postman pour envoyer des requêtes HTTP POST avec quelques exemples de données JSON dans le corps de la demande qui ressemble à ceci:

{ 
    "first_name": "John", 
    "last_name": "Doe", 
    "login": "jdoe", 
    "password": "lalala", 
    "email": "[email protected]", 
    "organization": "IETF" 
} 

Le corps de la demande passe clairement à travers, comme je suis capable de le sortir à l'écran, mais la partie decode-json me laisse avec une erreur de 500 serveurs. J'ai essayé quelques combinaisons qui semblaient raisonnables, mais je ne pouvais pas analyser JSON. Idéalement, je voudrais l'analyser en plist, alist ou une table de hachage. Toute aide grandement appréciée.

+0

Que voulez-vous réellement décoder? Vous pourriez en parler à Lisp. –

Répondre

1

Utilisez (restas: debug-mode-on) pour le débogage.

+0

Merci, @archimag. Il se trouve que j'avais déjà eu un alist dans 'params 'ne le savais pas. Un '(break)' dans la définition de la route a également aidé à étudier les 'params'. –

Questions connexes