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; }
}
我认为问题可能是你没有覆盖约定: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