2013-11-27 34 views
30

我想在使用webapi 2時爲我的http響應添加一個位置標頭。下面的方法顯示瞭如何使用命名路由完成此操作。有誰知道是否可以使用作爲webapi 2的一部分發布的屬性路由功能創建Url.Link?在Webapi 2中使用帶有屬性路由的Url.Link

string uri = Url.Link("DefaultApi", new { id = reponse.Id }); 
httpResponse.Headers.Location = new Uri(uri); 

在此先感謝

回答

48

可以使用屬性的路由時使用RouteName與Ur.Link。

public class BooksController : ApiController 
{ 
    [Route("api/books/{id}", Name="GetBookById")] 
    public BookDto GetBook(int id) 
    { 
     // Implementation not shown... 
    } 

    [Route("api/books")] 
    public HttpResponseMessage Post(Book book) 
    { 
     // Validate and add book to database (not shown) 

     var response = Request.CreateResponse(HttpStatusCode.Created); 

     // Generate a link to the new book and set the Location header in the response. 
     string uri = Url.Link("GetBookById", new { id = book.BookId }); 
     response.Headers.Location = new Uri(uri); 
     return response; 
    } 
} 

http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#route-names

相關問題