将数据从网页表单发送到自托管 api
Send data from web page form to a self hosted api
我有一个自托管 API,还有一个简单的 html 站点,我想从中提交表单数据到自托管 API。我目前正在本地主机上测试 webapi,该站点也通过 IIS 托管在本地主机上。我不确定我需要在 html 或 C# 代码中更改什么才能完成这项工作。这是我所拥有的基础知识:
public class TestController : ApiController
{
public TestController() {}
[HttpGet]
public IHttpActionResult()
{
//do stuff
return OK();
}
[HttpPost]
//POST localhost:9400/api/Test
public IHttpActionResult Post([FromBody]FormDatacollection name)
{
//do stuff
return OK();
}
}
这里是一个非常简单的 html 站点:
<html>
<head>
<title>
My Test Page
</title>
</head>
<body>
<form action="localhost:9400/api/test" method="post">
<input type="text" name="name"><br>
</form>
</body>
</html>
基本上,我希望将网站文本框中的文本通过 post 发送到自托管 api。我用现有的尝试了它,但它从未到达 post,并且看起来好像请求从未从浏览器发出过。但是,如果我在浏览器中手动输入 localhost:9400/api/Test,就会到达 Get,并且我会收到 OK 响应。
我只有 web 的基本配置 api。
public void Configuration(IAppBuilder appBuiler)
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
我想做的事可行吗?如果可行,我该怎么做?
如果不进行一些更改,它将无法工作,您的其余 api 期待数据以 json 的形式发送。首先,我强烈建议您获取 Fiddler 的副本,然后您将确切地看到来自您的站点以及从您的服务返回的内容。您可能会发现无法在服务中进行调试,因为服务接收的内容与控制器中的任何签名都不匹配,因此框架本身正在处理无效请求。该框架将根据 http 动词和方法参数将请求与方法匹配。
在让它工作方面,搜索发送 HTML 表单数据到休息 API,在这个网站和其他地方有很多结果。
我有一个自托管 API,还有一个简单的 html 站点,我想从中提交表单数据到自托管 API。我目前正在本地主机上测试 webapi,该站点也通过 IIS 托管在本地主机上。我不确定我需要在 html 或 C# 代码中更改什么才能完成这项工作。这是我所拥有的基础知识:
public class TestController : ApiController
{
public TestController() {}
[HttpGet]
public IHttpActionResult()
{
//do stuff
return OK();
}
[HttpPost]
//POST localhost:9400/api/Test
public IHttpActionResult Post([FromBody]FormDatacollection name)
{
//do stuff
return OK();
}
}
这里是一个非常简单的 html 站点:
<html>
<head>
<title>
My Test Page
</title>
</head>
<body>
<form action="localhost:9400/api/test" method="post">
<input type="text" name="name"><br>
</form>
</body>
</html>
基本上,我希望将网站文本框中的文本通过 post 发送到自托管 api。我用现有的尝试了它,但它从未到达 post,并且看起来好像请求从未从浏览器发出过。但是,如果我在浏览器中手动输入 localhost:9400/api/Test,就会到达 Get,并且我会收到 OK 响应。
我只有 web 的基本配置 api。
public void Configuration(IAppBuilder appBuiler)
{
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
appBuilder.UseWebApi(config);
}
我想做的事可行吗?如果可行,我该怎么做?
如果不进行一些更改,它将无法工作,您的其余 api 期待数据以 json 的形式发送。首先,我强烈建议您获取 Fiddler 的副本,然后您将确切地看到来自您的站点以及从您的服务返回的内容。您可能会发现无法在服务中进行调试,因为服务接收的内容与控制器中的任何签名都不匹配,因此框架本身正在处理无效请求。该框架将根据 http 动词和方法参数将请求与方法匹配。
在让它工作方面,搜索发送 HTML 表单数据到休息 API,在这个网站和其他地方有很多结果。