2016-06-07 12 views
10

मैं अपने एपीआई नियंत्रक कार्यों को सजाने के लिए SwaggerResponse विशेषताओं का उपयोग कर रहा हूं, यह सब ठीक काम करता है, हालांकि जब मैं जेनरेट किए गए दस्तावेज़ों को देखता हूं तो पैरामीटर के लिए विवरण फ़ील्ड खाली होता है।स्वाशबकल पैरामीटर विवरण

क्या एक्शन पैरामीटर (एक्सएमएल टिप्पणियों के बजाए) का वर्णन करने के लिए कोई विशेषता आधारित दृष्टिकोण है?

+0

मुझे ऐसा नहीं लगता है। – venerik

उत्तर

15
नवीनतम Swashbuckle साथ

, या बेहतर कम से कम कहा Swashbuckle.AspNetCore variant जो मैं उपयोग कर रहा हूं, पैरामीटर के लिए विवरण फ़ील्ड अब आउटपुट के रूप में सही ढंग से प्रदर्शित किया जा सकता है।

  • XML comments सक्षम किया जाना चाहिए और स्वैगर के साथ विन्यस्त
  • पैरामीटर स्पष्ट रूप से या तो [FromRoute] के साथ सजाया जाना चाहिए, [FromQuery], [FromBody] या:

    यह निम्न शर्तों को पूरा किए जाने की आवश्यकता है [FromUri]

  • विधि प्रकार के लिए एक ही (प्राप्त/पोस्ट/डाल आदि), जिसके साथ [Http...]
  • एक <param ...> एक्सएमएल टिप्पणी के साथ हमेशा की तरह पैरामीटर का वर्णन सजाया जाना चाहिए

एक पूर्ण नमूना इस तरह दिखता है:

/// <summary> 
/// Short, descriptive title of the operation 
/// </summary> 
/// <remarks> 
/// More elaborate description 
/// </remarks> 
/// <param name="id">Here is the description for ID.</param> 
[ProducesResponseType(typeof(Bar), (int)HttpStatusCode.OK)] 
[HttpGet, Route("{id}", Name = "GetFoo")] 
public async Task<IActionResult> Foo([FromRoute] long id) 
{ 
    var response = new Bar(); 
    return Ok(response); 
} 

निम्नलिखित में से कौन उत्पादन का उत्पादन:

Swagger output with parameter description

+0

क्या इन टिप्पणियों का उत्तराधिकारी करने का कोई तरीका है? उदाहरण के लिए जब मेरे पास एक क्रूड कंट्रोलर है। और मेरे सभी नियंत्रक (ग्राहक, ग्राहक, आदेश, आदि) .. इस नियंत्रक से विरासत में हैं। क्या मैं आधार नियंत्रक में पैरामीटर के लिए टिप्पणियां/विवरण निर्दिष्ट कर सकता हूं और अपने ग्राहक नियंत्रक को वारिस कर सकता हूं? – Enrico

2

आप की पुष्टि करनी चाहिए आप स्वैगर एक्सएमएल उपयोग करने के लिए अनुमति दे रहे हैं टिप्पणी

httpConfig.EnableSwagger(c => { 
       if (GetXmlCommentsPath() != null) { 
        c.IncludeXmlComments(GetXmlCommentsPath()); 
       } 
... 
... 
); 

protected static string GetXmlCommentsPath() { 
    var path = HostingEnvironment.MapPath("path to your xml doc file"); 
    return path; 
} 

तुम भी जाँच करनी चाहिए आप अपने वांछित परियोजना के लिए एक्सएमएल दस्तावेज़ पैदा कर रहे हैं। अपने वांछित परियोजना के तहत गुण (Alt + परियोजना या राइट क्लिक के शीर्ष पर दर्ज -> गुण) ->बिल्ड -> चेक एक्सएमएल फ़ाइल प्रलेखन

0

पूर्णता के लिए, जब Swashbuckle.AspNetCore (2.1.0) और Swashbuckle.SwaggerGen/Ui (6.0.0) के नवीनतम संस्करण का उपयोग कर, एक्सएमएल सक्षम प्रोजेक्ट के निर्माण में प्रलेखन फ़ाइल पीढ़ी

फिर आपके ConfigureServices() विधि के बाद:

services.ConfigureSwaggerGen(options => 
{ 
    options.SingleApiVersion(new Info 
    { 
     Version = "v1", 
     Title = "My API", 
     Description = "API Description" 
    }); 
    options.DescribeAllEnumsAsStrings(); 

    var xmlDocFile = Path.Combine(AppContext.BaseDirectory, $"{_hostingEnv.ApplicationName}.xml"); 
    if (File.Exists(xmlDocFile)) 
    { 
     var comments = new XPathDocument(xmlDocFile); 
     options.OperationFilter<XmlCommentsOperationFilter>(comments); 
     options.ModelFilter<XmlCommentsModelFilter>(comments); 
    } 
}); 
संबंधित मुद्दे