Zurückgeben eines Fehlerstatus in Haskell und Yesod

8

Ich bin ein Haskell-Neuling.

Ich versuche, einen kleinen Server Webdav mit dem Jessod Framework und nach dem WebdavServlet im Apache Tomcat 7 Quellcode modelliert. Ich bin auf ein Problem gestoßen, das einen Fehler von einer meiner Funktionen zurückbringt.

Mein webdav-Dienst sollte entweder XML oder JSON zurückgeben, abhängig vom Wert des Headers Accept , der vom Aufrufer gesendet wurde. Ich habe einen Datentyp namens RepXmlJson :

definiert %Vor%

Ich verwende diesen Datentyp als Rückgabewert meiner Dienste, insbesondere die Funktion lockWebdavR . Ich versuche, einen Status 423 (gesperrt) zurückzugeben, wenn eine Ressource derzeit gesperrt ist. Mein Code sieht so aus:

%Vor%

Ich erhalte den folgenden Fehler:

%Vor%

Ich habe das Buch "Entwickeln von Webanwendungen mit Haskell und Yesod" durchsucht, kann aber kein Beispiel für die Rückgabe eines Fehlers finden der richtige Typ ( Rep... ).

Wie erstelle ich eine RepXmlJson mit dem korrekten Fehlerstatus?

    
Ralph 07.11.2012, 12:33
quelle

1 Antwort

5

Die normale Beendigung eines Handlers führt immer zu einem Statuscode von 200. Um dies zu überschreiben, müssen Sie eine andere Antwort senden. In Ihrem Fall könnten Sie sendResponseStatus ausprobieren. Andere Möglichkeiten wären sendWaiResponse und redirectWith , obwohl ich bezweifle, dass letzteres nützlich sein wird.

    
Michael Snoyman 07.11.2012, 12:52
quelle