如何通过来自 Angular 的 HTTP PUT 请求从 .net 中的 JSON 文件获取数据?
How can I get data from a JSON file in .net, that comes thorugh an HTTP PUT request from Angular?
我有一个项目,我必须将前端从 CSHTML 重写为 Angular。我在 Angular 中设置了注册页面,并使用 PUT 请求将数据发送到后端。但我似乎无法从中提取不同的变量。我的主要问题是我不知道如何访问发送 PUT 请求时出现的文件。要求:
register() {
var body = {
ID: '',
firstName: this.registerModel.value.firstName,
lastName: this.registerModel.value.lastName,
gender: this.registerModel.value.gender,
email: this.registerModel.value.email,
password: this.registerModel.value.password
};
return this.http.post(this.apiUrl + '/Register/Register', body)
}
我在用户提交表单时调用函数:
onSubmit(){
console.log("clicked");
this.service.register().subscribe()
}
并且它调用的函数会查看存储现有用户的 Json,并应将它们进行比较(return Json 值仅用于测试):
[HttpPost]
public IActionResult Register(User user)
{
string path = @"./Data/Users.json";
//Instantiate User
User newUser = new User();
Guid ID = Guid.NewGuid();
newUser.ID = ID;
newUser.firstName = user.firstName;
newUser.lastName = user.lastName;
newUser.email = user.email;
newUser.gender = user.gender;
newUser.password = user.password;
if (user.firstName == null || user.lastName == null
|| user.email == null || user.gender == null || user.password == null)
{
ViewData["message"] = "Please Fill all fields!";
var data = "null in variables";
return Json(new { data = data });
}
string fileContent;
if (System.IO.File.Exists(path))
{
fileContent = System.IO.File.ReadAllText(path);
users = JsonConvert.DeserializeObject<List<User>>(fileContent);
foreach (User current in users)
{
if (current.email == newUser.email)
{
ViewData["message"] = "Already exists!";
var data3 = "existing user";
return Json(new { data3 = data3 });
}
}
users.Add(newUser);
string json = JsonConvert.SerializeObject(users);
System.IO.File.WriteAllText(path, json);
}
var data2 = "succes";
return Json(new { data2 = data2 });
}
我们能够解决问题。我想对控制器和 Startup.cs 文件进行一些修改。当我可以访问代码所在的 PC 时,我将 post 代码片段。但很快:我必须将 APIController 和路由添加到控制器,该函数需要一个 fromBody 标记,而且我必须更改 Startup.Cs 文件中的一行。现在完美运行了。
我有一个项目,我必须将前端从 CSHTML 重写为 Angular。我在 Angular 中设置了注册页面,并使用 PUT 请求将数据发送到后端。但我似乎无法从中提取不同的变量。我的主要问题是我不知道如何访问发送 PUT 请求时出现的文件。要求:
register() {
var body = {
ID: '',
firstName: this.registerModel.value.firstName,
lastName: this.registerModel.value.lastName,
gender: this.registerModel.value.gender,
email: this.registerModel.value.email,
password: this.registerModel.value.password
};
return this.http.post(this.apiUrl + '/Register/Register', body)
}
我在用户提交表单时调用函数:
onSubmit(){
console.log("clicked");
this.service.register().subscribe()
}
并且它调用的函数会查看存储现有用户的 Json,并应将它们进行比较(return Json 值仅用于测试):
[HttpPost]
public IActionResult Register(User user)
{
string path = @"./Data/Users.json";
//Instantiate User
User newUser = new User();
Guid ID = Guid.NewGuid();
newUser.ID = ID;
newUser.firstName = user.firstName;
newUser.lastName = user.lastName;
newUser.email = user.email;
newUser.gender = user.gender;
newUser.password = user.password;
if (user.firstName == null || user.lastName == null
|| user.email == null || user.gender == null || user.password == null)
{
ViewData["message"] = "Please Fill all fields!";
var data = "null in variables";
return Json(new { data = data });
}
string fileContent;
if (System.IO.File.Exists(path))
{
fileContent = System.IO.File.ReadAllText(path);
users = JsonConvert.DeserializeObject<List<User>>(fileContent);
foreach (User current in users)
{
if (current.email == newUser.email)
{
ViewData["message"] = "Already exists!";
var data3 = "existing user";
return Json(new { data3 = data3 });
}
}
users.Add(newUser);
string json = JsonConvert.SerializeObject(users);
System.IO.File.WriteAllText(path, json);
}
var data2 = "succes";
return Json(new { data2 = data2 });
}
我们能够解决问题。我想对控制器和 Startup.cs 文件进行一些修改。当我可以访问代码所在的 PC 时,我将 post 代码片段。但很快:我必须将 APIController 和路由添加到控制器,该函数需要一个 fromBody 标记,而且我必须更改 Startup.Cs 文件中的一行。现在完美运行了。