Supplementary to documentation, when implementing an API there should also be a validation included, as the most important mantra is: don't trust user input.
Whatever validation you will implement in your service, you should start off by implement the IHasResponseStatus
interface on your response DTO:
using ServiceStack; public class HelloResponse : IHasResponseStatus { public string Result { get; set; } public ResponseStatus ResponseStatus { get; set; } }
This will guarantee that any exception will get serialized into the ResponseStatus
property. Additionally, the following exceptions will adapt the HTTP status code of the request:
ArgumentException
and descendants returns400 BadRequest
NotImplementedException
returns405 MethodNotAllowed
Any other exception returns
500 InternalServerError
You can add custom mappings by adding a translation to the MapExceptionToStatusCode
property of your host's config, which also supports inheritance:
using System; using System...