silkapp / rest

Packages for defining APIs, running them, generating client code and documentation.

Home Page:http://silkapp.github.io/rest

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The possibility to set custom success response codes

jonkri opened this issue · comments

I would like to be able to return a custom response code upon success, such as setting 303 See Other instead of 200 OK.

Thanks for a nice library!

That's a good idea. Do you have any idea how you would like the user API would look for this?

How about having a customResponseCode that introduces a ToResponseCode constraint on the output dictionary?

That sounds like a good idea, I'm not sure how it'd work out internally though. If it doesn't, another option would be to have a monadic setResponseCode inside the handlers. We'd have to change the type for the handlers, though, which is pretty nasty. If we ever do that (we've discussed it before) we should really make it opaque.

setResponseCode seems like the nicest to work with. The return type of handlers should perhaps be more structured, i.e. data HandlerReturn = HandlerReturn { returnBody :: !ByteString, returnCode :: !Int, returnHeaders :: !(Map HeaderName HeaderValue)}.