gpt4 book ai didi

javascript - 我如何测试我的 web api Post Web 方法以了解内部发生了什么?

转载 作者:行者123 更新时间:2023-11-28 21:09:54 27 4
gpt4 key购买 nike

这是我的情况...

我们有一个 Microsoft Dynamics CRM 的本地安装,我正试图从它发出一个 ajax 调用到我在另一台服务器上创建的服务。我已经解决了很多问题 - 但此时我能够通过我在 CRM 中的表格上放置的 javascript 成功地从 CRM 向我的服务发出 GET 请求。

仅供引用(因为我现在不完全确定这些东西是否相关)...

  • 我必须在 IIS 中为我​​的服务设置匿名身份验证(CRM 有它自己的身份验证,我将依赖)
  • 我必须使用我们的 CRM 安装的主机地址设置 Access-Control-Allow-Origin 的响应 header

因此,在完成这些操作之后,我能够通过 GET 成功调用我的 Web 服务。我可以从 [HttpGet] 网络方法中返回一个字符串。

但是,现在我需要通过 POST 实际调用一个 Web 方法来将一些数据发布到我的 Web 服务。因此,您可以在下面看到我的服务实现以及我正在使用的 javascript 进行 POST 调用。

using CRMService.Models;
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Net.Mail;
using System.Web;
using System.Web.Http;

namespace CRMService.Controllers
{
public class DefaultController : ApiController
{
// GET: Default
public string Get()
{
return "Hi";
}

[HttpPost]
public string GiveParameters(TestClass tc)
{
try
{
Dictionary<string, object> Parameters = new Dictionary<string, object>();
Parameters.Add("id", tc.id);
Parameters.Add("one", tc.one);
Parameters.Add("two", tc.two);
NonQuery("InsertTestItem", ConfigurationManager.ConnectionStrings["TestConnection"].ToString(), Parameters);
return "success";
}
catch (Exception ex)
{
return "ex";
}
}
}
}


var new_budget = Xrm.Page.data.entity.attributes.get("new_budget").getValue();
var new_name = Xrm.Page.data.entity.attributes.get("new_name").getValue();
var id = Xrm.Page.data.entity.getId();
data = '{"TestClass":{"one":"' + new_name + '", "two":"'+ new_budget +'", "id":"'+ id +'"}}'

$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "https://<hiddingMyUrl>/api/Default/GiveParameters",
data: data,
dataType: "json",
success: function(data) {
console.log("Success");
},
error: function(result) {
console.log("Error");
}
});

当我进行此 POST 调用时,起初我可以看到它正在执行一些“预检”操作并发出 OPTIONS 请求 - 然后返回 403(我想,如果没记错的话)。我查看并解决了这个问题,方法是在 IIS 中向我的 Web 服务添加一个 Access-Control-Allow-Headers header ,其值为 Origin、X-Requested-With、Content-Type、Accept

这样做之后,我的 POST 实际上给出了 200 状态代码 - 但是,正如您在我的代码中看到的那样,如果一切顺利的话,我应该会在数据库中看到数据。
..那么问题当然是......我的网络服务代码是否正常工作?通常我可以很容易地测试它——但是我对 web api 还很陌生。在这一点上,我真的没有得到最好的测试方法 - 我不知道它是否与我的代码有关,或者 web api 本身是否存在一些配置问题。

这是我的路由配置:

 public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { action = "Index", id = UrlParameter.Optional }
);
}

最佳答案

您应该尝试使用 REST 客户端。这里有两个不错的:

我个人更喜欢 Postman,但实际上两者都不错。

关于javascript - 我如何测试我的 web api Post Web 方法以了解内部发生了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36165654/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com