javascript - 如何从 C# 服务器中的 POST(或其他 HTTP)请求访问参数?
问题描述
我正在使用 ASP.Net Core 构建一个 Reactjs 应用程序,我对此完全陌生。我有一个 JS 组件(据我所知)正在向 C# 服务器控制器发出适当的获取请求 (POST)。服务器明确接收请求。但是,我完全不知道如何访问请求的参数(我通过正文传递)。
我尝试使用 [FromBody] 直接访问正文。我还尝试使用 Request.Body、Request.Form、Request.Query、Request.Params 等。我尝试遵循我在网上找到的似乎试图解决我的问题的指南. 其中有几个完全没有工作。他们中的大多数都在使用我当前的库中没有的关键字、类等,并且他们没有列出适当的库。据我所知,我已经偶然发现了正确的答案。但是对于像我这样具有高度逻辑思维但在该领域几乎为零经验的人来说,我无法围绕任何一个想法。
我在 JavaScript 中使用 fetch 的 POST 请求:
fetch('api/Database/PushStatus',
{
method: 'post',
headers: { 'Content-type': 'application/json' },
body: JSON.stringify({ order: this.state.orderNum, status: this.state.newStatus })
}
).then(response => {
response.json().then(data => {
this.setState({ reqCheck: "" + response, didPush: false });
})
}).catch(err => {
this.setState({ reqCheck: "Failure! (js)", didPush: false })
});
我的 C# 服务器上的请求处理:
[Route("api/[controller]/[action]")]
public class DatabaseController : Controller
{
string conStri = "Data Source=ADM293\\MSSQLSERVER01;Initial Catalog=testDB;User ID=sa;Password=password.1";
SqlConnection cnct = null;
[HttpPost]
public void PushStatus(string order, string status)
{
cnct = new SqlConnection(conStri);
SqlCommand command = new SqlCommand("insert into testTable values ('" + order + "', '" + status + "');", cnct);
using (cnct)
{
cnct.Open();
int result = command.ExecuteNonQuery();
cnct.Close();
}
}
}
我希望我的服务器使用 和 的内容进行this.state.orderNum
更新this.state.newStatus
。相反,我的服务器使用空字符串值更新(这很有意义)。
解决方案
您可以创建一个代表请求的类:
public class PushStatusRequest
{
public string Order { get; set; }
public string Status { get; set; }
}
并像这样使用它:
[HttpPost]
public void PushStatus([FromBody] PushStatusRequest request){
//request.Status
//request.Order
}
推荐阅读
- dynamic-data - 请求自定义路由文件时动态更改数据库
- python - 如何使用“--no-binary”编写 requirements.txt 文件?
- visual-studio-code - VSCode 终端进程命令启动失败
- powershell - Powershell下载并执行exe文件
- angular - 使用服务层 HttpTestingController 进行 Angular 单元测试错误:预计未找到打开的请求 GET
- html - 如何使背景图像填充 div 并做出响应
- c# - 无法初始化模拟类的成员
- css - Laravel DataTables 基于值的颜色单元格?
- angular - 面临在 Json 值中为名称查找 id 的问题
- python - 当 slice 有一行结果时返回 pandas.DataFrame