【问题标题】:how to test apiController如何测试 apiController
【发布时间】:2018-01-05 05:24:20
【问题描述】:

我正在 VS 2013 中处理现有的 Windows 服务项目。

我已经添加了一个 Web API 控制器类,我现在不记得它是 (v2.1) 还是 (v1) 控制器类了......无论如何我都称它为 SynchroniseFromAwsService

我试图从 AWS lambda 调用中调用它,但它告诉我我没有访问权限。所以我需要在本地对其进行测试,看看它是否可以尝试诊断问题。

我想在本地进行测试,但不确定如何操作..请查看代码...

 namespace Workflow
{
    public class SynchroniseFromAwsService: ApiController
    {
        //// POST api/<controller>
        public string SapCall([FromBody]string xmlFile)
        {
            string responseMsg = "Failed Import User";

            if (!IsNewestVersionOfXMLFile(xmlFile))
            {
                responseMsg = "Not latest version of file, update not performed";
            }
            else
            {
                Business.PersonnelReplicate personnelReplicate = BusinessLogic.SynchronisePersonnel.BuildFromDataContractXml<Business.PersonnelReplicate>(xmlFile);
                bool result = Service.Personnel.SynchroniseCache(personnelReplicate);

                if (result)
                {
                    responseMsg = "Success Import Sap Cache User";
                }
            }

            return "{\"response\" : \" " + responseMsg + " \" , \"isNewActiveDirectoryUser\" : \" false \"}";
        }
}
}

我在 google 上阅读过下载一个名为 Postman 的程序并进行测试。

我可以在 VS 中调用什么,然后传入一个包含要测试的 xml 文件的虚拟数据字符串吗?

最好的方法是什么

感谢您的回复

【问题讨论】:

  • 您可以向您的 api 服务创建一个发布请求,以进行测试。使用邮递员会很简单,或者只需一个简单的 html 文件就可以了
  • 如果您知道如何向 web api 发出请求,那么您应该可以使用 postman 轻松完成。你能告诉我们你 ar3 在尝试从 posyman 调用 api 时得到什么行为吗?你试过从谷歌浏览器浏览 api 的 url 吗?
  • 我在网上阅读有关路线的信息,我必须使用这些吗?
  • @ChetanRanpariya 我不知道如何向正在阅读邮递员 atm 的 api 提出请求

标签: c# api asp.net-apicontroller


【解决方案1】:

你可以使用

RestSharp .NET 的简单 REST 和 HTTP API 客户端

访问http://restsharp.org/了解更多详情。

使用 nuget 包管理器在您的项目中安装此依赖项

Install-Package RestSharp -Version 106.2.0

【讨论】:

  • 我在 Q stackoverflow.com/questions/10226089/… 的最后一条评论中找到了一个使用 restSharp 的示例,请原谅我的简单 Q 但 pawel.sawicz.eu/restsharp 中使用的代码 ....我在哪里添加这个呢?我要新建一个类吗?
  • 创建一个类并添加将使用rest sharp调用您的api的方法。
  • 感谢您的回复 iv 创建了一个新类并添加了一个函数,代码如下 C# var client = new RestClient("192.168.0.1"); var request = new RestRequest("api/item/", Method.GET); var queryResult = client.Execute>(request).Data;但是 被标记为未找到...在这种情况下,项目是什么?对不起,如果它有些愚蠢,是不是缺少参考?
  • 试试下面的代码。我已经创建了控制台应用程序link,对于Item,您需要使用JsonConvert.DeserializeObject&lt;T&gt;(response.Content); 使用Newtonsoft nuget 包。
【解决方案2】:

您的代码是正确的。您需要在本地对其进行测试。您可以使用 Postman rest 客户端本身来完成它。这很简单。
在您的代码中,您的函数 SapCall 缺少 HTTP 方法属性。因此,请为您的方法指定属性,用于识别这是哪种类型的请求。

[HttpPost]
public string SapCall([FromBody]string xmlFile){

现在使用邮递员休息客户端并调用你的 API url。它将成功执行。

【讨论】:

  • 感谢您的回复 OK iv 查看了 postMan 教程,看起来很简单。请问我该如何调用这个我需要通过 IIS 设置 VS 还是我可以点击播放按钮并在邮递员 UI 中尝试127.0.0.1/SynchronisePersonnelXmlFromAwsServiceController/… 的发布请求
  • 我已经尝试从 VS 运行播放并发布到 127.0.0.1/SynchronisePersonnelXmlFromAwsServiceController/… 但这已返回 无法开始监视对 'D:\Development\Trunk\WebAppsMVC\Icon\global.asax 的更改' 因为访问被拒绝。
  • 是否是Web API项目?如果是 Web API 项目。只需点击播放按钮并尝试从邮递员 UI 向 127.0.0.1/SynchronisePersonnelXmlFromAwsServiceController/... 发出请求。如果问题仍然存在。只需在控制器中实现一个示例 HTTP GET 请求方法,然后从邮递员 UI 调用请求并检查连接是否成功
猜你喜欢
  • 1970-01-01
  • 2014-02-20
  • 2013-03-03
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多