我的 C# MVC Web 应用 api 的 URI 是什么?
What is my C# MVC Web app api's URI?
我花了一天多的时间试图获取我主页的 jquery,以访问我的 C# ASP.NET MVC 项目中的 api 控制器。
APP_START中的RouteConfig.cs是这样的:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "API Default",
url: "api/{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
}
我的 class 在名为 LogInController 的 Controllers 目录中:
我已将 LogInController class 设置如下:
这是我在 Index.cshtml 上的 jquery:
var apiUrl = "api/LogIn";
-
$.post(apiUrl,
{
userName: 'kamron',
pwHash: sha256_digest('password')
},
function (data, status) {
try {
alert(data, status);
} catch (e) {
alert("System error, please try again.");
};
});
和
$.getJSON(apiUrl)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
alert(key + ':' + item);
});
});
我会感激一切。我已经盯着这个看了一天多了,现在想弄清楚我的问题是什么....
任何对我有帮助的额外信息请索取,我已尝试 post 所有相关信息。
非常感谢大家:)
您似乎没有在接受 POST 的控制器上执行任何操作。此外,$.getJSON 调用没有附加任何参数,出于安全原因,您通常不希望通过 GET 请求传递凭据。
向 WebApi 发布多个参数最好通过创建表示参数的模型来实现,即
public class LogonRequest
{
public string Username { get; set; }
public string Password { get; set; }
}
然后接受如下所示的模型:
// POST api/values
public string Post([FromBody]LogonRequest creds)
{
//auth code...
}
可以在此处找到设置 jQuery 调用和 POST 操作的一个很好的示例:
How to pass json POST data to Web API method as object
此外,如果您还没有使用 Fiddler,Fiddler 可以很好地帮助您解决这些问题。
我花了一天多的时间试图获取我主页的 jquery,以访问我的 C# ASP.NET MVC 项目中的 api 控制器。
APP_START中的RouteConfig.cs是这样的:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "API Default",
url: "api/{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
}
我的 class 在名为 LogInController 的 Controllers 目录中:
我已将 LogInController class 设置如下:
这是我在 Index.cshtml 上的 jquery:
var apiUrl = "api/LogIn";
-
$.post(apiUrl,
{
userName: 'kamron',
pwHash: sha256_digest('password')
},
function (data, status) {
try {
alert(data, status);
} catch (e) {
alert("System error, please try again.");
};
});
和
$.getJSON(apiUrl)
.done(function (data) {
// On success, 'data' contains a list of products.
$.each(data, function (key, item) {
// Add a list item for the product.
alert(key + ':' + item);
});
});
我会感激一切。我已经盯着这个看了一天多了,现在想弄清楚我的问题是什么....
任何对我有帮助的额外信息请索取,我已尝试 post 所有相关信息。
非常感谢大家:)
您似乎没有在接受 POST 的控制器上执行任何操作。此外,$.getJSON 调用没有附加任何参数,出于安全原因,您通常不希望通过 GET 请求传递凭据。
向 WebApi 发布多个参数最好通过创建表示参数的模型来实现,即
public class LogonRequest
{
public string Username { get; set; }
public string Password { get; set; }
}
然后接受如下所示的模型:
// POST api/values
public string Post([FromBody]LogonRequest creds)
{
//auth code...
}
可以在此处找到设置 jQuery 调用和 POST 操作的一个很好的示例: How to pass json POST data to Web API method as object
此外,如果您还没有使用 Fiddler,Fiddler 可以很好地帮助您解决这些问题。