Show / Hide Table of Contents

Class SimpleJsonService

A minimal framework for a JSON-based REST service.

Inheritance
System.Object
SimpleJsonService
Namespace: LaunchDarkly.TestHelpers.HttpTest
Assembly: LaunchDarkly.TestHelpers.dll
Syntax
public sealed class SimpleJsonService : Object
Remarks

This class builds on Handlers and SimpleRouter to provide a simplified structure for implementing a basic REST service that can use JSON-serializable types for request and response bodies. For very basic services that are used in a test scenario, this is much lighter-weight and more portable than using ASP.NET Core or ASP.NET.

The basic pattern is to call the Route methods to map any number of endpoint handlers. Each handler method takes an IRequestContext as the first parameter, and can optionally take a value of some JSON-deserializable type as a second parameter, which will be automatically parsed from the request body. Its return value is either a SimpleResponse if there is no response body, or a SimpleResponse<T> containing a value that will be serialized to JSON as a response body.

For simple path parameters, you may inclue a regex containing capture groups in the path, and then call GetPathParam(Int32) to get the value. Any path containing parentheses is assumed to be a regex, otherwise it is taken as a literal.

This class uses System.Text.Json for JSON conversions.

Constructors

SimpleJsonService()

Creates a new instance.

Declaration
public SimpleJsonService()

Fields

SerializerOptions

Options for System.Text.Json to enable the standard behavior of camelcasing property names.

Declaration
public static JsonSerializerOptions SerializerOptions
Field Value
Type Description
System.Text.Json.JsonSerializerOptions

Properties

Handler

Returns the stable Handler that is the external entry point to this delegator. This is used implicitly if you use a SimpleJsonService anywhere that a Handler is expected.

Declaration
public Handler Handler { get; }
Property Value
Type Description
Handler

Methods

Route(HttpMethod, String, Func<IRequestContext, SimpleResponse>)

Adds a synchronous endpoint handler with no request body parameters and no response body.

Declaration
public void Route(HttpMethod method, string path, Func<IRequestContext, SimpleResponse> syncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, SimpleResponse> syncHandler

the handler

Route(HttpMethod, String, Func<IRequestContext, Task<SimpleResponse>>)

Adds an asynchronous endpoint handler with no request body parameters and no response body.

Declaration
public void Route(HttpMethod method, string path, Func<IRequestContext, Task<SimpleResponse>> asyncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, System.Threading.Tasks.Task<SimpleResponse>> asyncHandler

the handler

Route<TInput>(HttpMethod, String, Func<IRequestContext, TInput, SimpleResponse>)

Adds a synchronous endpoint handler with no request body parameters and a JSON response.

Declaration
public void Route<TInput>(HttpMethod method, string path, Func<IRequestContext, TInput, SimpleResponse> syncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, TInput, SimpleResponse> syncHandler

the handler

Type Parameters
Name Description
TInput

Route<TInput>(HttpMethod, String, Func<IRequestContext, TInput, Task<SimpleResponse>>)

Adds an asynchronous endpoint handler with a JSON request body parameter and no response body.

Declaration
public void Route<TInput>(HttpMethod method, string path, Func<IRequestContext, TInput, Task<SimpleResponse>> asyncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, TInput, System.Threading.Tasks.Task<SimpleResponse>> asyncHandler

the handler

Type Parameters
Name Description
TInput

Route<TOutput>(HttpMethod, String, Func<IRequestContext, SimpleResponse<TOutput>>)

Adds a synchronous endpoint handler with no request body parameters and a JSON response.

Declaration
public void Route<TOutput>(HttpMethod method, string path, Func<IRequestContext, SimpleResponse<TOutput>> syncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, SimpleResponse<TOutput>> syncHandler

the handler

Type Parameters
Name Description
TOutput

Route<TOutput>(HttpMethod, String, Func<IRequestContext, Task<SimpleResponse<TOutput>>>)

Adds an asynchronous endpoint handler with no request body parameters and a JSON response.

Declaration
public void Route<TOutput>(HttpMethod method, string path, Func<IRequestContext, Task<SimpleResponse<TOutput>>> asyncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, System.Threading.Tasks.Task<SimpleResponse<TOutput>>> asyncHandler

the handler

Type Parameters
Name Description
TOutput

Route<TInput, TOutput>(HttpMethod, String, Func<IRequestContext, TInput, SimpleResponse<TOutput>>)

Adds an asynchronous endpoint handler with a JSON request body parameter and a JSON response.

Declaration
public void Route<TInput, TOutput>(HttpMethod method, string path, Func<IRequestContext, TInput, SimpleResponse<TOutput>> syncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, TInput, SimpleResponse<TOutput>> syncHandler

the handler

Type Parameters
Name Description
TInput
TOutput

Route<TInput, TOutput>(HttpMethod, String, Func<IRequestContext, TInput, Task<SimpleResponse<TOutput>>>)

Adds an asynchronous endpoint handler with a JSON request body parameter and a JSON response.

Declaration
public void Route<TInput, TOutput>(HttpMethod method, string path, Func<IRequestContext, TInput, Task<SimpleResponse<TOutput>>> asyncHandler)
Parameters
Type Name Description
System.Net.Http.HttpMethod method

the HTTP method

System.String path

the endpoint path

System.Func<IRequestContext, TInput, System.Threading.Tasks.Task<SimpleResponse<TOutput>>> asyncHandler

the handler

Type Parameters
Name Description
TInput
TOutput

Operators

Implicit(SimpleJsonService to Handler)

Declaration
public static implicit operator Handler(SimpleJsonService me)
Parameters
Type Name Description
SimpleJsonService me
Returns
Type Description
Handler
In This Article
Back to top Generated by DocFX