从 Webforms 应用程序与 Web API 交谈
Talking to a Web API from a Webforms application
我有一个 asp.net webforms 应用程序作为我的 UI 层。此应用程序负责将对象列表向下发送到我的 DAL Class 库,然后该库会将此对象列表发送到 WebAPI 进行处理。
WebAPI 需要检索对象列表,进行处理并发回 OK 状态代码。
这可能吗?是否有关于如何完成此操作的任何好的文档?
这是我的网络表单应用程序中的内容:
public static async Task<bool> MyFunction(IList<string> Ids)
{
using (var client = new HttpClient())
{
bool success = false;
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET
HttpResponseMessage response = await client.GetAsync("api/products/MyProcessFunctionName");
if (response.IsSuccessStatusCode)
{
success = true;
}
return success;
}
}
我需要弄清楚如何将字符串 ID 列表作为参数发送到 WebApi 处理函数。
可以从您的 webforms 项目调用 Web Api。这是一个使用 WPF 调用 Web Api 的示例,对于 webforms 的调用应该相同:
http://www.codeproject.com/Articles/611176/Calling-ASP-Net-WebAPI-using-HttpClient
您可以使用 Microsoft.AspNet.WebApi.Client
来使用您的 restful API。
这是来自 asp.net 站点的官方示例:
http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client
如果需要调用自定义函数MyProcessFunction
,首先需要在控制器中定义函数
public IEnumerable<string> MyProcessFunctionName()
{
return new string[] { "value1", "value2" };
}
之后,如果你需要通过名称调用它 client.GetAsync("api/products/MyProcessFunctionName")
你需要 change the RouteConfig file to allow API calls by action name:
Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
);
我假设您已经知道如何在您的项目中设置 Web API 控制器。
这是一个代码示例,用于将数据从 UI 发送回 Web API 控制器方法,然后将数据保存在数据库中,
第 1 步:
在您的前端,我希望您有一个自定义 javascript 文件来处理任何按钮单击事件。在此基础上,尝试使用如下所示的 POST 方法将数据从 UI 发送到 Web API,
var StaffSaveRequest = {};
StaffSaveRequest.StaffDetails = {};
StaffSaveRequest.StaffDetails.Name = "Test Name";
$.ajax({
url: 'api/Staff/SaveStaff', //this is the path to web api controller method
type: 'POST',
dataType: 'json',
data: StaffSaveRequest,
success: function (response, textStatus, xhr) {
//handle success
},
error: function (xhr, textStatus, errorThrown) {
if (textStatus != 'abort') {
//handle error
}
}
});
第 2 步:
如下所示添加控制器 class 并查看内联注释。此控制器 class 然后将与数据访问层中的方法交互以保存任何信息。
public class StaffController : ApiController //inherits ApiController
{
[HttpPost] //add post attribute
public HttpResponseMessage SaveStaff(StaffSaveRequest staffSaveRequest)
{
try
{
var result = StaffManager.Save(staffSaveRequest);//save in database using a method in data access layer
return Request.CreateResponse(HttpStatusCode.OK, result);//result the response back
}
catch (Exception ex)
{
//log error
}
}
我希望这能让您对从哪里开始以及如何开始有所了解。回复,如果你还有 issues/questions.
我有一个 asp.net webforms 应用程序作为我的 UI 层。此应用程序负责将对象列表向下发送到我的 DAL Class 库,然后该库会将此对象列表发送到 WebAPI 进行处理。
WebAPI 需要检索对象列表,进行处理并发回 OK 状态代码。
这可能吗?是否有关于如何完成此操作的任何好的文档?
这是我的网络表单应用程序中的内容:
public static async Task<bool> MyFunction(IList<string> Ids)
{
using (var client = new HttpClient())
{
bool success = false;
client.BaseAddress = new Uri("http://localhost:9000/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP GET
HttpResponseMessage response = await client.GetAsync("api/products/MyProcessFunctionName");
if (response.IsSuccessStatusCode)
{
success = true;
}
return success;
}
}
我需要弄清楚如何将字符串 ID 列表作为参数发送到 WebApi 处理函数。
可以从您的 webforms 项目调用 Web Api。这是一个使用 WPF 调用 Web Api 的示例,对于 webforms 的调用应该相同: http://www.codeproject.com/Articles/611176/Calling-ASP-Net-WebAPI-using-HttpClient
您可以使用 Microsoft.AspNet.WebApi.Client
来使用您的 restful API。
这是来自 asp.net 站点的官方示例:
http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client
如果需要调用自定义函数MyProcessFunction
,首先需要在控制器中定义函数
public IEnumerable<string> MyProcessFunctionName()
{
return new string[] { "value1", "value2" };
}
之后,如果你需要通过名称调用它 client.GetAsync("api/products/MyProcessFunctionName")
你需要 change the RouteConfig file to allow API calls by action name:
Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { action = "get", id = RouteParameter.Optional }
);
我假设您已经知道如何在您的项目中设置 Web API 控制器。
这是一个代码示例,用于将数据从 UI 发送回 Web API 控制器方法,然后将数据保存在数据库中,
第 1 步:
在您的前端,我希望您有一个自定义 javascript 文件来处理任何按钮单击事件。在此基础上,尝试使用如下所示的 POST 方法将数据从 UI 发送到 Web API,
var StaffSaveRequest = {};
StaffSaveRequest.StaffDetails = {};
StaffSaveRequest.StaffDetails.Name = "Test Name";
$.ajax({
url: 'api/Staff/SaveStaff', //this is the path to web api controller method
type: 'POST',
dataType: 'json',
data: StaffSaveRequest,
success: function (response, textStatus, xhr) {
//handle success
},
error: function (xhr, textStatus, errorThrown) {
if (textStatus != 'abort') {
//handle error
}
}
});
第 2 步:
如下所示添加控制器 class 并查看内联注释。此控制器 class 然后将与数据访问层中的方法交互以保存任何信息。
public class StaffController : ApiController //inherits ApiController
{
[HttpPost] //add post attribute
public HttpResponseMessage SaveStaff(StaffSaveRequest staffSaveRequest)
{
try
{
var result = StaffManager.Save(staffSaveRequest);//save in database using a method in data access layer
return Request.CreateResponse(HttpStatusCode.OK, result);//result the response back
}
catch (Exception ex)
{
//log error
}
}
我希望这能让您对从哪里开始以及如何开始有所了解。回复,如果你还有 issues/questions.