2015-04-13 21 views
11

Tôi có API C# Web và tôi đang cố gắng lấy tài liệu trợ giúp được tạo tự động để làm việc với IHttpActionResult. Tôi đã rút gọn ví dụ dưới đây để dễ đọc hơn một chút.Tài liệu trợ giúp về API của C# Web IHttpActionResult

Đối với đối tượng, dưới đây là một ví dụ đơn giản. BusinessObject chỉ là một trình bao bọc. Bộ sưu tập là CollectionBase : ObservableCollection<T>, ILoadable where T : BusinessObject. Một cơ sở mã cũ hơn của nó được tạo tự động nhưng sử dụng lại nó cho việc này.

public class Value : BusinessObject 
    { 
     public int Id { get; set; } 
    } 
    public class Values : CollectionBase<Value> 
    { 
     public override Value LoadObject(System.Data.IDataRecord record) 
     { 
      return new Value(); 
     } 
    } 

Đối với phía API của sự vật. Các công trình sau đây.

public class Values : ApiController 
{ 
    public IEnumerable<Value> GetThis() 
    { 
     Values values = new Values(); 
     return values; 
    } 
} 

enter image description here

vấn đề này được đưa ra khi tôi cố gắng làm

public IHttpActionResult GetThis() 
    { 
     Values values = new Values(); 
     return Ok(values); 
    } 

Nó không nhận ra rằng nó nên sử dụng một kiểu trả về khác nhau. 'Mô tả tài nguyên' kết thúc là IHttpActionResult không có đầu ra mẫu. Bây giờ tôi có thể thêm

config.SetActualResponseType(typeof(IEnumerable<Value>), "Values", "GetThis"); 

và nó sẽ hiển thị đầu ra mẫu nhưng 'Mô tả tài nguyên' sẽ vẫn là IHttpActionResult. Đó là vấn đề chính tôi đang gặp phải. Tôi muốn sử dụng IHttpActionResult vì nó rất dễ sử dụng và có thể trả về mã lỗi nếu cần rất dễ dàng. Tôi chỉ muốn có thể tự động xây dựng tài liệu.

CẬP NHẬT: Sau khi nghiên cứu thêm, tôi đã làm tốt bài đăng này. Resource Description on Web API Help page is showing "None."

Về cơ bản, bạn thêm thuộc tính loại phản hồi vào phương thức.

[ResponseType(typeof(IEnumerable<Value>))] 
public IHttpActionResult GetThis() 
{ 
    Values values = new Values(); 
    return Ok(values); 
} 

Mặc dù kỹ thuật này hoạt động và tôi đã sửa đổi mã hiện tại của mình để sử dụng. Nó sẽ vẫn là tốt đẹp nếu có một cách để có nó tự động tìm ra nó bằng cách nào đó. Không chắc chắn nếu điều này là có thể hay không.

+0

Bạn có lẽ nên trả lời câu hỏi của riêng bạn nếu bạn phát hiện ra câu trả lời (và có, đó là câu trả lời đúng; P). – julealgon

+0

Ya, tôi đã nghĩ về điều đó. Đã hy vọng ai đó sẽ đến với một 'hey chỉ thay đổi cấu hình để xem những gì OK (loại) trả về' và nó sẽ làm điều đó cho mọi phương pháp mà không cần phải bao gồm các thuộc tính mỗi lần. Tôi sẽ để nó không được trả lời lâu hơn một chút để xem. –

Trả lời

21

Điều này phù hợp với những gì tôi đang làm. Đó là một chút tẻ nhạt để phải bao gồm mọi thời gian nhưng nó cho phép tôi trả lại mã lỗi nếu cần thiết và giữ lại chức năng tài liệu trợ giúp.

[ResponseType(typeof(IEnumerable<Value>))] 
public IHttpActionResult GetThis() 
{ 
    Values values = new Values(); 
    return Ok(values); 
} 

Resource Description on Web API Help page is showing "None."

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