我是webapi的新手,并创建了一个web api项目。这里不同的控制器方法需要图像作为参数。我正在使用外部第三方api检查用户上传的图像是否不是亵渎图像。因此,我认为与其使用actionMethod级别进行检查,还不如使用过滤器进行检查,这样可以节省我单独检查的时间,这可能是个好主意。但是我不知道如何开始为此编写代码。
public class ImageFilter : FilterAttribute,IFilter
{
public void OnActionExecuting(HttpActionContext httpActionContex)
{
if(!httpActionContex.ActionDescriptor.) // ???? what should come
}
}
请引导我。不需要正确的代码,只需正确的方向和指导..谢谢
答案 0 :(得分:0)
顾名思义,FilterAttribute是一个属性,可以在WebAPI管道上全局设置,也可以在特定的控制器方法上单独设置。您只需在特定的控制器方法上拍上[ImageFilter]
属性,WebAPI管道将在执行操作方法之前执行过滤器-使您有机会过滤对该方法提出的请求。
对于自定义逻辑的实际实现,您可以在HttpContext.Current.Request
方法中访问OnActionExecuting
,从而可以访问传入的HTTP请求。然后,您可以从中读取数据,将其传递给您的第三方API,如果未通过过滤器,则可以访问Response并在它到达控制器之前结束它:
var response = HttpContext.Current.Response;
response.StatusCode = (int)HttpStatusCode.BadRequest; // or whatever
response.End();