Tôi muốn phải GET phương pháp trên api của tôi, một với Route với các tham số đường dẫn:Làm thế nào để phân biệt các thông số truy vấn từ con đường thông số
api/người/{PersonId}
và một với Route với các tham số truy vấn:?
api/người text = cái gì đó
nhưng nếu tôi đặt mã này:
// GET: api/people/{personId}
[Route("api/people/{personId}")]
[HttpGet]
public HttpResponseMessage Get(long personId)
{
}
// GET: api/people?text=something
[Route("api/people")]
[HttpGet]
public HttpResponseMessage Get(string text)
{
}
Và sau đó cố gắng mở /api/người/1 nó nói sai định dạng và khi tôi cố gắng để mở /api/người text = cái gì đó nó? công trinh.
Tôi chỉ có các tuyến đường mặc định được xác định:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Làm thế nào tôi có thể có cả hai làm việc? Xác định rằng nếu đó là một tham số đường dẫn đi đến một trong những đầu tiên và nếu nó là một tham số truy vấn đi đến thứ hai trên?
Điều gì xảy ra khi bạn thay đổi 'long' thành' int'? (Ngoài tò mò). Câu hỏi hay. Tôi không chắc chắn về câu trả lời (chưa). Tôi sẽ không nghĩ rằng bạn có bất kỳ vấn đề gì khi nhìn vào mã này. –
Tôi đã thử nghiệm kịch bản chính xác này với Web API 2.2 và nó hoạt động. Tôi nghĩ bạn đang sử dụng phiên bản API Web cũ. –
@JayMee 'long' hoặc' int' kết quả là giống nhau –