3

我正在查看 Webapi 帮助页面以生成文档,但我看到的所有教程都让我感到疑惑。

Q1。我如何自己填充样本数据?据我了解,它着眼于数据类型并根据数据类型制作一些数据。我的一些数据有特定的要求(即长度不能超过 5 个字符)。

如何为每种方法编写自己的示例数据?

Q2 如何隐藏警告信息。

我收到这条消息

无法为媒体类型“application/x-www-form-urlencoded”生成样本。无法使用格式化程序“JQueryMvcFormUrlEncodedFormatter”写入类型“ProductDM”。

我不太确定“x-www-form-urlencoded”是什么,但如果我不支持,我怎么能隐藏该消息或说“不支持”?

Q3 如何为每个参数写一个描述。在大多数情况下,它们是什么很清楚,但在某些情况下可能不是。此外,如果它自动获取注释并将其放在它们旁边以表明参数 A 可能是选项而参数 B 不是选项,那将是很好的。

4

2 回答 2

11

Q1:您是否看过“Areas\HelpPage\App_Start\HelpPageConfig.cs”文件。您应该看到一堆注释掉的示例,您可以如何定义自己的示例。

例子:

public static class HelpPageConfig
{
    public static void Register(HttpConfiguration config)
    {
        //// Uncomment the following to use the documentation from XML documentation file.
        //config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));

        //// Uncomment the following to use "sample string" as the sample for all actions that have string as the body parameter or return type.
        //// Also, the string arrays will be used for IEnumerable<string>. The sample objects will be serialized into different media type 
        //// formats by the available formatters.
        //config.SetSampleObjects(new Dictionary<Type, object>
        //{
        //    {typeof(string), "sample string"},
        //    {typeof(IEnumerable<string>), new string[]{"sample 1", "sample 2"}}
        //});

Q2:您看到“application/x-www-form-urlencoded”媒体类型的错误,因为我们用于它的格式化程序只能反序列化或读取数据而不能写入。这里的错误是表明它只能写样本,但如果你实际上是在这种媒体类型中发送数据,它可以被正确地反序列化。您可以为此媒体类型提供显式示例,而不是隐藏此部分。HelpPageConfig.cs 有这方面的例子:

//// Uncomment the following to use "[0]=foo&[1]=bar" directly as the sample for all actions that support form URL encoded format
//// and have IEnumerable<string> as the body parameter or return type.
//config.SetSampleForType("[0]=foo&[1]=bar", new MediaTypeHeaderValue("application/x-www-form-urlencoded"), typeof(IEnumerable<string>));

Q3:关于动作参数的文档,你总是可以使用常规注释(摘要,参数等)并生成文档文件并指向它,如下所示:

//// Uncomment the following to use the documentation from XML documentation file.
//config.SetDocumentationProvider(new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml")));

我们目前不支持从数据注释生成文档,我们目前在跟踪它时遇到问题:http: //aspnetwebstack.codeplex.com/workitem/877

于 2013-05-03T22:17:24.003 回答
0

关于Q2“How can I hide warning messages”,在Areas/HelpPage/Views/Help/DisplayTemplates/Samples.chtml中,可以在代码中添加if语句:

@foreach (var mediaType in mediaTypes)
    {
        if (mediaType != "application/x-www-form-urlencoded") { /// <--- line added here
            <h4 class="sample-header">@mediaType</h4>
            <div class="sample-content">
                <span><b>Sample:</b></span>
                @{
                    var sample = samples[mediaType];
                    if (sample == null)
                    {
                        <p>Sample not available.</p>
                    }
                    else
                    {
                        @Html.DisplayFor(s => sample);
                    }
                }
            </div>
        } /// <----- closing parenthesis
    }

就我而言,我已经显示了 POST 数据结构,因此不需要“x-www-form-urlencoded”部分。默认情况下,helpPageConfig 还显示一个查询字符串,而我的方法只接受对象。

于 2019-12-10T06:36:45.660 回答