当前位置: 首页 > 编程语言 > C#

如何获取WebAPIWeb服务中的可用方法列表?分享

时间:2023-04-11 10:40:41 C#

如何获取WebAPI网络服务中可用方法的列表?我正在构建一个小型测试工具,它应该为用户提供一个Web服务列表(使用WebAPI构建)。用户应该能够选择要测试的服务。我正在使用HttpClientclient=newHttpClient();client.BaseAddress=newUri("http://'localhost':51062/");//为JSON格式添加一个Accept标头。client.DefaultRequestHeaders.Accept.Add(newMediaTypeWithQualityHeaderValue("application/json"));我正在寻找类似client.GetAllWebServices()的东西,这将返回用户可以看到的方法列表。意思是,他在控制器上开发并想要测试的方法。Michael提到ApiExplorer是正确的。这为您提供了所有WebApi方法的详细信息。您只需要根据需要格式化响应。下面是一个简单的示例,用于获取所有方法及其参数和返回类型的列表。您当然可以更全面地执行此操作-只需浏览对象以找到您需要的内容:usingSystem.Collections.Generic;使用System.Linq;使用System.Web.Http;使用System.Web.Http.Description;namespaceWebApplication1.Controllers{publicclassApiMethodController:ApiController{publicIEnumerableGetMethods(){//获取自动注册的IApiExplorerIApiExplorerex=this.Configuration.Services.GetApiExplorer();//循环、转换并返回所有描述returnscriptsex.//忽略self.Where(d=>d.ActionDescriptor.ControllerDescriptor.ControllerName!="ApiMethod").Select(d=>{//转换为可序列化结构returnnewHelpMethod{Parameters=d.ParameterDescriptions.Select(p=>newHelpParameter{Name=p.Name,Type=p.ParameterDescriptor.ParameterType.FullName,IsOptional=p.ParameterDescriptor.IsOptional}).ToArray(),Method=d.HttpMethod.ToString(),RelativePath=d.RelativePath,ReturnType=d.ResponseDescription.DeclaredType==null?null:d.ResponseDescription.DeclaredType.ToString()};});}}publicclassHelpMethod{publicstringMethod{get;放;}publicstringRelativePath{得到;放;}publicstringReturnType{get;放;}public}}publicclassHelpParameter{publicstringName{get;放;}公共字符串类型{得到;放;}publicboolIsOptional{得到;放;优点是本身就是一个WebApi调用,所以可以用HttpClient来调用,使用http://www.localhost.com/api/ApiMethod/Methods来处理这是一个示例JSON响应:[{"Method":"GET","RelativePath":"api/Account/{id}","ReturnType":"WebApplication1.Models.Account","Parameters":[{"名称”:“id”,“类型”:“System.Int32”,“IsOptional”:假}]},{“方法”:“POST”,“RelativePath”:“api/Account”,“ReturnType”:null,"Parameters":[{"Name":"a","Type":"WebApplication1.Models.Account","IsOptional":false}]},{"Method":"GET","RelativePath":"api/Maths?i={i}&j={j}","ReturnType":"System.Int32","Parameters":[{"Name":"i","Type":"System.Int32","IsOptional":false},{"Name":"j","Type":"System.Int32","IsOptional":false}]}]继续获取XML文档注释不是很清楚,但是MSDN博客有是关于它的教程。另外,还有其他的包可用,比如你可以use,hook,steal,类似你需要的VSMag的更多细节以上是C#学习教程:HowtogetthelistofavailablemethodsinaWebAPIwebservice?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢