Book Image

Mastering ServiceStack

By : Andreas Niedermair
Book Image

Mastering ServiceStack

By: Andreas Niedermair

Overview of this book

Table of Contents (13 chapters)

Intercepting requests and responses

A very basic scenario that is perfectly applicable amongst multiple services in a distributed environment is the need for a global identifier that travels from top to bottom of every request. This is often needed to determine which request to one API caused which request to another API; for example, to trace all the operations caused by a certain button-click in the UI.

This can be achieved by generating an identifier in the first service call and storing it along with the request. Whenever a service boundary is crossed, for example by forwarding the request to another service, the current identifier needs to be injected into that call.

First, we will define an interface that can be implemented by requests and responses to pass the identifier outside the scope of HTTP boundaries (in essence for MQ scenarios):

public interface IHasRequestIdentifier
  string RequestIdentifier { get; set; }

Additionally to this storage, we will also attach the identifier...