WebApi中具有相同参数类型和不同[Route(“ / cars”)] / [RoutePrefix(“ api / v1 / data”)]的多个Post请求

时间:2018-07-20 20:07:50

标签: c# asp.net-web-api

我正在尝试使用重复的操作合并WebAPI控制器,以限制控制器的蔓延。这将需要一个控制器的多个“具有相同参数类型”的帖子,当我尝试使用[RoutePrefix(“”)]和不同的方法级别[Route(“”)]

来执行此操作时,会看到下面的错误

如何允许多个Post请求?

错误: CS0111类型“ DataController”已经定义了具有相同参数类型的名为“ Post”的成员

packages.config

中的

WebApi版本

<package id="Microsoft.AspNet.WebApi" version="5.2.6" targetFramework="net461" />

示例代码:

using System.Collections.Generic;
using System.Web.Http;

namespace UberCool.v1.Data.Controllers
{
    [RoutePrefix("api/v1/data")]
    public class DataController : ApiController
    {
        [Route("/cars")]
        public List<Cars> Post()
        {
            var response = new CarsSFTP().GetData();
            return response;
        }

        [Route("/trucks")]
        public List<Trucks> Post()
        {
            var response = new TrucksSFTP().GetData();
            return response;
        }
    }
}

谢谢!

1 个答案:

答案 0 :(得分:0)

如ckuri所建议。

利用方法名称中的HTTP Verb作为前缀。以下两个都将被视为发布请求。如果我包括路由,则它们可以是同一控制器,但方法不同。从上面调整示例代码。

-PostMyRandomMethod()
 -PostMyRandomMethod2()

using System.Collections.Generic;
using System.Web.Http;

namespace UberCool.v1.Data.Controllers
{
    [RoutePrefix("api/v1/data")]
    public class DataController : ApiController
    {
        [Route("/cars")]
        public List<Cars> PostMyRandomMethod()
        {
            var response = new CarsSFTP().GetData();
            return response;
        }

        [Route("/trucks")]
        public List<Trucks> PostMyRandomMethod2()
        {
            var response = new TrucksSFTP().GetData();
            return response;
        }
    }
}