public async Task Invoke(HttpContext context) { var request = context.Request; var path = request.Path.ToString(); path = path.Trim('/'); if (!path.StartsWith(Options.ApiPrefox, StringComparison.OrdinalIgnoreCase)) { await _next.Invoke(context); } var apiClass = GetApiClass(path); var response = new JsonReponse(); try { var result = ApiManager.Execute(apiClass, context.Request); response.Success = true; response.Model = result; response.Message = string.Empty; } catch (Exception ex) { response.Success = false; response.Message = ex.Message; } context.Response.ContentType = "application/json"; var content = System.Text.Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(response)); await context.Response.Body.WriteAsync(content, 0, content.Length); }
//Put base operation here: such as Log, Exception handler protected HttpResponseMessage ExecuteAction(object[] args, Func <object[], JsonReponse> callback) { var response = new JsonReponse { Success = false }; try { return(Request.CreateResponse(callback(args))); } catch (Exception ex) { response.Data = ex.ToJson(); } return(Request.CreateResponse(response)); }