MVC Web API地址错误方法

本文关键字:错误 方法 地址 API Web MVC | 更新日期: 2023-09-27 17:50:31

所以,我有3个方法在我的API:

public List<FlatResponse> GetFlats()
public Flat Reserve(int id, int customerId, string service)
public List<FlatResponse> SearchFlats(double budget, double surface)

现在,不知何故,API对每个响应都使用GetFlats()方法。

也许我使用了错误的url?

保留平面,我使用

myUrl.com/api/flats/?id=1&customerId=2&service=someservice

。要搜索特定的单位,我使用

myUrl.com/api/flats/?budget=500&surface=30

我做错了什么?

编辑:

有可能我的项目结构不正确。虽然它可以在另一个API中工作。

我的Flatcontroller类

 public class FlatsController : ApiController
    {
        public List<FlatResponse> GetFlats()
        {
            ...
        }
        public Flat Reserve(int id, int customerId, string service)
        {
            ...
        }
        public List<FlatResponse> SearchFlats(double budget, double surface)
        {
           ...
        }
    }

flatresponse类

public class FlatResponse
    {
        public int Id { get; set; }
        public string Description { get; set; }
        public string Street { get; set; }
        public int HouseNumber { get; set; }
        public int PostalCode { get; set; }
        public string City { get; set; }
        public double RentalPrice { get; set; }
        public double Surface { get; set; }
        public int ContractTime { get; set; }
        public DateTime StartDate { get; set; }
        public List<string> Facilities { get; set; }
        public string ContactPersonName { get; set; }
        public string ContactPersonEmail { get; set; }
        public string ContactPersonTelephone { get; set; }
        public bool Reserved { get; set; }
        public string DetailUrl { get; set; }
        public string ImageUrl { get; set; }
    }

MVC Web API地址错误方法

我认为问题可能是你没有覆盖约定:GetFlats有"get"作为前缀,所以它是调用get请求。

尝试使用动词属性,以便重写约定:

[HttpGet] public List<FlatResponse> GetFlats()
[HttpGet] public Flat Reserve(int id, int customerId, string service)
[HttpGet] public List<FlatResponse> SearchFlats(double budget, double surface)

认为,

从你的代码中,我可以将Flat作为一个实体,它有3个get方法。然而,从定义来看,除了GetFlats方法,其他方法都没有遵循约定告诉MVC API控制器它们是get方法。要启用此功能,可以跟随@Hugo回答前缀[HttpGet]属性或前缀方法定义与get,如GetReserve (?

之后,

myUrl.com/api/flats/?id=1&customerId=2&service=someservice

应该调用GetReserve和

myUrl.com/api/flats/?budget=1&surface=2

应该调用GetSearchFlats