Common ServiceStack plugins
There are some requirements that are very common when building web services. For instance, many sites need to validate user input, log requests, or manage the security of the application. ServiceStack comes with some plugins that are very simple to add and that provide advanced functionality through a simple interface. This recipe shows how these features can be added using some of the default plugins available.
How to do It...
There are quite a few plugins that ServiceStack v4.0 comes with, and they are all added the same way; some are standalone, some have dependencies, but they all implement the IPlugin
interface. The following are a few examples showing how the required code is added to AppHost
in the overridden Configure
method:
ValidationFeature
enables the use of Fluent Validation to construct easy to read rules. A common usage of these rules is validation of request values before ServiceStack executes the HTTP method of your service:
Plugins.Add(new ValidationFeature());
RegistrationFeature
provides new web service endpoints to enable user registration. This feature is commonly used with AuthFeature
:
Plugins.Add(new AuthFeature(() => new AuthUserSession(), new IAuthProvider[] { new BasicAuthProvider() })); Plugins.Add(new RegistrationFeature());
CorsFeature
enables your web services to support Cross-Origin Resource Sharing (CORS). This allows JavaScript clients on other domains to use your web services:
Plugins.Add(new CorsFeature());
How it works...
The ServiceStack plugins object is just List<IPlugin>
that is accessible from your AppHost
class.
CorsFeature
and ValidationFeature
both utilize ServiceStack request filters to enable functionality for each request that is sent to your web services.
AuthFeature
and RegistrationFeature
create new endpoints to expose functionality as well as enable the use of AuthenticateAttribute
to decorate your service classes. You can see this if you look at the metadata page of your application after adding AuthFeature
; you'll notice the additional endpoints your application is now hosting.
The following screenshot depicts few of the plugins provided by the ServiceStack framework:
AuthFeature
and RegistrationFeature
have added four endpoints to enable functionality such as authenticating users and the registration of new ones. The implementation specifics of this depend on how these objects are created.
Plugins are a powerful way to expose reusable functionality across ServiceStack apps with minimal effort. The previous screenshot shows just a few of the plugins that the ServiceStack framework provides. It's easy to add the class implements IPlugin
, it can be registered with ServiceStack and will be processed at start-up of the application.