コード例 #1
0
        private Collection<ApiDescription> InitializeApiDescriptions()
        {
            var apiDescriptions = new Collection<ApiDescription>();

            foreach (var item in base.ApiDescriptions)
            {
                apiDescriptions.Add(item);
            }

            var dynamicApiControllerInfos = _dynamicApiControllerManager.GetAll();
            foreach (var dynamicApiControllerInfo in dynamicApiControllerInfos)
            {
                if (IsApiExplorerDisabled(dynamicApiControllerInfo))
                {
                    continue;
                }

                foreach (var dynamicApiActionInfo in dynamicApiControllerInfo.Actions.Values)
                {
                    if (IsApiExplorerDisabled(dynamicApiActionInfo))
                    {
                        continue;
                    }

                    var apiDescription = new ApiDescription();

                    var controllerDescriptor = new DynamicHttpControllerDescriptor(_abpWebApiConfiguration.HttpConfiguration, dynamicApiControllerInfo);
                    var actionDescriptor = new DynamicHttpActionDescriptor(_abpWebApiConfiguration, controllerDescriptor, dynamicApiActionInfo);

                    apiDescription.ActionDescriptor = actionDescriptor;
                    apiDescription.HttpMethod = actionDescriptor.SupportedHttpMethods[0];

                    var actionValueBinder = _abpWebApiConfiguration.HttpConfiguration.Services.GetActionValueBinder();
                    var actionBinding = actionValueBinder.GetBinding(actionDescriptor);

                    apiDescription.ParameterDescriptions.Clear();
                    foreach (var apiParameterDescription in CreateParameterDescription(actionBinding, actionDescriptor))
                    {
                        apiDescription.ParameterDescriptions.Add(apiParameterDescription);
                    }

                    SetResponseDescription(apiDescription, actionDescriptor);

                    apiDescription.RelativePath = "api/services/" + dynamicApiControllerInfo.ServiceName + "/" + dynamicApiActionInfo.ActionName;

                    apiDescriptions.Add(apiDescription);
                }
            }

            return apiDescriptions;
        }
コード例 #2
0
        private Collection<ApiDescription> InitializeApiDescriptions() {
           
            Collection<ApiDescription> apiDescriptions = new Collection<ApiDescription>();
            //webapi
            foreach (var item in base.ApiDescriptions)
            {
                apiDescriptions.Add(item);
            }

            //dynamic api
            var dynamicapiinfos = DynamicApiControllerManager.GetAll();
            foreach (var dynamicapiinfo in dynamicapiinfos)
            {
                foreach (var item in dynamicapiinfo.Actions)
                {
                    ApiDescription api = new ApiDescription();
                    var httpaction = new HttpControllerDescriptor();
                    httpaction.Configuration = _config;
                    httpaction.ControllerType = dynamicapiinfo.ServiceInterfaceType;
                    httpaction.ControllerName = dynamicapiinfo.ServiceName;               
                    var action = new DynamicHttpActionDescriptor(_abpWebApiConfiguration, httpaction, item.Value);
                    api.ActionDescriptor = action;
                    api.HttpMethod = GetMethod(item.Value.Verb);
                    IActionValueBinder actionValueBinder = _config.Services.GetActionValueBinder();
                    HttpActionBinding actionBinding = actionValueBinder.GetBinding(action);

                    //parameter
                    IList<ApiParameterDescription> parameterDescriptions = CreateParameterDescription(actionBinding,action);
                    //using refletions to internal set 
                    var prop=typeof(ApiDescription).GetProperties().Where(p => p.Name == "ParameterDescriptions").SingleOrDefault();
                    prop.SetValue(api, new Collection<ApiParameterDescription>(parameterDescriptions));        


                    //resopnse
                    ResponseDescription responseDescription = CreateResponseDescription(action);
                    var prop2 = typeof(ApiDescription).GetProperties().Where(p => p.Name == "ResponseDescription").SingleOrDefault();
                    prop2.SetValue(api, responseDescription);
                    
                    api.RelativePath = "api/services/"+dynamicapiinfo.ServiceName + "/" + item.Value.ActionName;
                    
                    apiDescriptions.Add(api);
                }
            }
            return apiDescriptions;
        }
コード例 #3
0
 private void SetResponseDescription(ApiDescription apiDescription, DynamicHttpActionDescriptor actionDescriptor)
 {
     var responseDescription = CreateResponseDescription(actionDescriptor);
     var prop2 = typeof(ApiDescription).GetProperties().Single(p => p.Name == "ResponseDescription");
     prop2.SetValue(apiDescription, responseDescription);
 }