如何测试张贴方法在小提琴手



我试图调用以下POST方法[http://localhost:45361/api/test],在小提琴手,与[请求头]选项卡,有[User-Agent: Fiddler, Content-Type: application/json; charset=utf-8]和在[请求体],我正在传递以下请求{"tag":"5667"}。但是,它输出一个错误——> 对象引用没有设置为对象的实例。

    [HttpPost]
    public HttpResponseMessage post([FromBody] Query query)
    {
            IQueryable<data_qy> Data = null;
            if (!string.IsNullOrEmpty(query.tag)) //--> line causing the ERROR
            {
                var ids = query.tag.Split(',');
                var dataMatchingTags = db.data_qy.Where(c => ids.Contains(c.TAG));
                if (Data == null)
                    Data = dataMatchingTags;
                else
                    Data = Data.Union(dataMatchingTags);
            }
            if (!string.IsNullOrEmpty(query.name))
            {
                var ids = query.name.Split(',');
                var dataMatchingTags = db.data_qy.Where(c => ids.Any(id => c.Name.Contains(id)));
                if (Data == null)
                    Data = dataMatchingTags;
                else
                    Data = Data.Union(dataMatchingTags);
            }
            if (Data == null) 
                Data = db.data_qy;
            if (query.endDate != null)
            {
                Data = Data.Where(c => c.UploadDate <= query.endDate);
            }
            if (query.startDate != null)
            {
                Data = Data.Where(c => c.UploadDate >= query.startDate);
            }
            var data = Data.ToList();
            if (!data.Any())
            {
                var message = string.Format("No data found");
                return Request.CreateErrorResponse(HttpStatusCode.NotFound, message);
            }
            return Request.CreateResponse(HttpStatusCode.OK, data);
        }

编辑:查询类:

public class Query
  {
    public string name { get; set; }
    public string tag{ get; set; }
    public Nullable<DateTime> startDate { get; set; }
    public Nullable<DateTime> endDate{ get; set; }
  }

我有点不清楚,如果这是测试后方法的正确方法,或者如果我需要在我的上述控制器中添加进一步的代码。请建议。多谢。

您在fiddler中需要的最重要的东西之一是post请求中的Content-Type头规范。Web API具有基于请求标头和管道中内容协商者的注册的内容协商概念。请点击这里了解更多细节。

在你的例子中:

- type: application/json;utf - 8字符集=

以下是提琴手作曲家的全部请求:

User-Agent: Fiddler
Host: localhost:26572
Content-Length: 16
Content-Type: application/json; charset=utf-8

,下面是请求正文:

{"name":"hello"}

有了这个post request,你应该可以继续了

最新更新