GOOGLE ADS

среда, 13 апреля 2022 г.

Как я могу получить данные из файла JSON в .net, который поступает через HTTP-запрос PUT от Angular?

У меня есть проект, и мне нужно переписать Frontend с 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, где хранятся существующие пользователи, и должна их сравнивать (возвращаемые значения 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. Я опубликую фрагменты кода, когда смогу получить доступ к ПК, на котором находится код. Но вкратце: пришлось добавить APIController и роутинг в контроллер, функции нужен был тег fromBody, и пришлось изменить строчку в файле Startup.Cs. Теперь работает идеально.

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...