2015-10-07 17 views
6

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?

+0

Đ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. –

+0

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ũ. –

+0

@JayMee 'long' hoặc' int' kết quả là giống nhau –

Trả lời

4

Tôi chỉ cần đặt điều này vào Visual Studio 2015 bằng cách sử dụng API Web 2 và nó hoạt động tốt. Tôi đã phải thêm các dòng sau (một cho mỗi phương pháp điều khiển).

return Request.CreateResponse(HttpStatusCode.OK); 

Tôi cũng thổi đi Cấu hình lộ trình mặc định. Các url sau đây chỉ làm việc tốt

http://localhost:64377/api/people/1

http://localhost:64377/api/people?text=Hello

tôi nhấn cả hai phương pháp tương ứng trong bộ điều khiển của tôi khi tôi đặt các URL này trong trình duyệt IE.

+0

Điều này làm việc tôi đoán vấn đề là Default Route Config, cảm ơn bạn đời! ;) –

+0

Không sao cả. Chúc mừng! –

Các vấn đề liên quan