private static void UseControllerlessApiDocumentation(HttpConfiguration config) { var queryApiExplorer = new ControllerlessApiExplorer( messageTypes: Bootstrapper.GetKnownQueryTypes().Select(t => t.QueryType), responseTypeSelector: type => BusinessLayerBootstrapper.GetQueryResultType(type)) { ControllerName = "queries", ParameterSourceSelector = type => ApiParameterSource.FromUri, HttpMethodSelector = type => HttpMethod.Get, ActionNameSelector = type => type.ToFriendlyName() }; var commandApiExplorer = new ControllerlessApiExplorer( messageTypes: Bootstrapper.GetKnownCommandTypes(), responseTypeSelector: type => typeof(void)) { ControllerName = "commands", ParameterName = "command", ActionNameSelector = type => type.ToFriendlyName(), }; config.Services.Replace(typeof(IApiExplorer), new CompositeApiExplorer( config.Services.GetApiExplorer(), commandApiExplorer, queryApiExplorer)); }
private static void UseControllerlessApiDocumentation(HttpConfiguration config) { var queryApiExplorer = new ControllerlessApiExplorer( messageTypes: Bootstrapper.GetKnownQueryTypes().Select(t => t.QueryType), responseTypeSelector: type => new QueryInfo(type).ResultType) { ControllerName = "queries", ParameterSourceSelector = type => ApiParameterSource.FromUri, HttpMethodSelector = type => HttpMethod.Get, ActionNameSelector = type => type.Name.Replace("Query", string.Empty) }; var commandApiExplorer = new ControllerlessApiExplorer( messageTypes: Bootstrapper.GetKnownCommandTypes(), responseTypeSelector: type => typeof(void)) { ControllerName = "commands", ParameterName = "command", ActionNameSelector = type => type.Name.Replace("Command", string.Empty), }; config.Services.Replace(typeof(IApiExplorer), new CompositeApiExplorer( config.Services.GetApiExplorer(), commandApiExplorer, queryApiExplorer)); }
private static void UseControllerlessApiDocumentation(HttpConfiguration config, ILifetimeScope lifetimeScope) { using (var scope = lifetimeScope.BeginLifetimeScope()) { var routeMapper = scope.Resolve <ResponsibilityChain <Type, IEnumerable <string> > >(); var commandApiExplorer = new ControllerlessApiExplorer( messageTypes: GetKnownCommandTypes(lifetimeScope), responseTypeSelector: type => typeof(void)) { ApiPrefix = string.Empty, ControllerName = "commands", ParameterName = "command", ActionNameSelector = commandType => routeMapper.Handle(commandType).First(), }; var queryApiExplorer = new ControllerlessApiExplorer( messageTypes: GetKnownQueryTypes(lifetimeScope), responseTypeSelector: DetermineResultTypes) { ApiPrefix = string.Empty, ControllerName = "queries", ParameterSourceSelector = type => ApiParameterSource.FromUri, HttpMethodSelector = type => HttpMethod.Get, ActionNameSelector = queryType => routeMapper.Handle(queryType).First(), }; config.Services.Replace( typeof(IApiExplorer), new CompositeApiExplorer( config.Services.GetApiExplorer(), commandApiExplorer, queryApiExplorer ) ); } }