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[] {"sample 1", "sample 2"}} }); // 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>)); // Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values" // and action named "Put". config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put"); // Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png" // on the controller named "Values" and action named "Get" with parameter "id". config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id"); // Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>. // The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter. config.SetActualRequestType(typeof (string), "Values", "Get"); // Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>. // The sample will be generated as if the controller named "Values" and action named "Post" were returning a string. config.SetActualResponseType(typeof (string), "Values", "Post"); }
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"))); config.SetDocumentationProvider(new MultiXmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/XmlDocument.xml"), HttpContext.Current.Server.MapPath("~/App_Data/WebAPI2PostMan.WebModel.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"}} }); // Extend the following to provide factories for types not handled automatically (those lacking parameterless // constructors) or for which you prefer to use non-default property values. Line below provides a fallback // since automatic handling will fail and GeneratePageResult handles only a single type. #if Handle_PageResultOfT config.GetHelpPageSampleGenerator().SampleObjectFactories.Add(GeneratePageResult); #endif // Extend the following to use a preset object directly as the sample for all actions that support a media // type, regardless of the body parameter or return type. The lines below avoid display of binary content. // The BsonMediaTypeFormatter (if available) is not used to serialize the TextSample object. config.SetSampleForMediaType( new TextSample("Binary JSON content. See http://bsonspec.org for details."), new MediaTypeHeaderValue("application/bson")); //// 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>)); //// Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values" //// and action named "Put". config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put"); //// Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png" //// on the controller named "Values" and action named "Get" with parameter "id". config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id"); //// Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>. //// The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter. config.SetActualRequestType(typeof(string), "Values", "Get"); //// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>. //// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string. config.SetActualResponseType(typeof(string), "Values", "Post"); }
public void SetSampleResponse_WithParameters() { HttpConfiguration config = new HttpConfiguration(); TextSample sample = new TextSample("test"); config.SetSampleResponse(sample, new MediaTypeHeaderValue("application/json"), "values", "post", "id", "name"); object sampleGeneratorObj; config.Properties.TryGetValue(typeof(HelpPageSampleGenerator), out sampleGeneratorObj); HelpPageSampleGenerator sampleGenerator = Assert.IsType<HelpPageSampleGenerator>(sampleGeneratorObj); Assert.NotEmpty(sampleGenerator.ActionSamples); var actionSample = sampleGenerator.ActionSamples.First(); Assert.Equal("values", actionSample.Key.ControllerName); Assert.Equal("post", actionSample.Key.ActionName); Assert.Equal(new MediaTypeHeaderValue("application/json"), actionSample.Key.MediaType); Assert.Equal(SampleDirection.Response, actionSample.Key.SampleDirection); Assert.Equal(2, actionSample.Key.ParameterNames.Count); Assert.True(actionSample.Key.ParameterNames.SetEquals(new[] { "id", "name" })); Assert.Same(sample, actionSample.Value); }
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"}} //}); // Extend the following to provide factories for types not handled automatically (those lacking parameterless // constructors) or for which you prefer to use non-default property values. Line below provides a fallback // since automatic handling will fail and GeneratePageResult handles only a single type. #if Handle_PageResultOfT config.GetHelpPageSampleGenerator().SampleObjectFactories.Add(GeneratePageResult); #endif // Extend the following to use a preset object directly as the sample for all actions that support a media // type, regardless of the body parameter or return type. The lines below avoid display of binary content. // The BsonMediaTypeFormatter (if available) is not used to serialize the TextSample object. var bsonFormatter = new BsonMediaTypeFormatter(); byte[] bson; using (var s = new MemoryStream()) { bsonFormatter.WriteToStream(typeof(string), "Hello world", s, Encoding.UTF8); bson = s.ToArray(); } config.SetSampleForMediaType( new ByteSample { Bytes = bson }, new MediaTypeHeaderValue("application/bson")); var rss = @"<?xml version=""1.0"" encoding=""UTF-8"" ?> <rss version=""2.0""> <channel> <title>Title</title> <description>Desc</description> <link>http://www.test.com</link> <pubDate>Tue, 21 Jan 2014 18:45:00 +0000 </pubDate> <item> <title>Item</title> <description>Desc</description> <link>http://www.test.com/1</link> <pubDate>Tue, 21 Jan 2014 18:45:00 +0000 </pubDate> </item> </channel> </rss>"; config.SetSampleResponse(rss, new MediaTypeHeaderValue("text/rss"), "Values", "Get"); //// 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>)); //// Uncomment the following to use "1234" directly as the request sample for media type "text/plain" on the controller named "Values" //// and action named "Put". //config.SetSampleRequest("1234", new MediaTypeHeaderValue("text/plain"), "Values", "Put"); //// Uncomment the following to use the image on "../images/aspNetHome.png" directly as the response sample for media type "image/png" //// on the controller named "Values" and action named "Get" with parameter "id". //config.SetSampleResponse(new ImageSample("../images/aspNetHome.png"), new MediaTypeHeaderValue("image/png"), "Values", "Get", "id"); //// Uncomment the following to correct the sample request when the action expects an HttpRequestMessage with ObjectContent<string>. //// The sample will be generated as if the controller named "Values" and action named "Get" were having string as the body parameter. //config.SetActualRequestType(typeof(string), "Values", "Get"); //// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>. //// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string. //config.SetActualResponseType(typeof(string), "Values", "Post"); }