MRequestHelper 1.2.3
See the version list below for details.
dotnet add package MRequestHelper --version 1.2.3
NuGet\Install-Package MRequestHelper -Version 1.2.3
<PackageReference Include="MRequestHelper" Version="1.2.3" />
<PackageVersion Include="MRequestHelper" Version="1.2.3" />
<PackageReference Include="MRequestHelper" />
paket add MRequestHelper --version 1.2.3
#r "nuget: MRequestHelper, 1.2.3"
#:package MRequestHelper@1.2.3
#addin nuget:?package=MRequestHelper&version=1.2.3
#tool nuget:?package=MRequestHelper&version=1.2.3
1.1.1 - 1.2.3 -----> NET 5.0; 1.0.0 - 1.1.0 -----> NET 6.0; 1.2.2 - содержит крит. ошибки. 1.2.2.1 - содержит крит. ошибки адаптеров. 1.2.2.2 -----> самая стабильная. 1.2.3 - самая новая.
Пример модели:
/// <summary>
/// Модель, наследуемся от BaseModel<TId> указывая тип Id-шника
/// </summary>
internal class Treatment : BaseModel<int>
{
/// <summary>
/// Указываем JsonProperty если у json объекта другое название
/// </summary>
[JsonProperty("IdTreatment")]
public override int Id { get; set; }
public DateTime TreatmentDate { get; set; }
public string TreatmentReason { get; set; }
public double? TreatmentSum { get; set; }
public int? IdClient { get; set; }
/// <summary>
/// Указывает название контроллера
/// Пример: ".../api/Treatments"
/// </summary>
public override string Path { get; set; } = "Treatments";
}
Пример логической части:
Для задания сайта используем (устанавливается перед дальнейшим использованием) (дальнейшее изменение запрещено):
// Установка сайта для запросов.
RequestHelper.Helpers.RequestHelper.SetConfiguration(new("<...>://<...>/api/"));
Способы использования:
Использование только методов (существуют аналоги для асинхронных методов, к названию метода добавляется приставка Async):
var treatment = new Treatment() { Id = 0, TreatmentDate = DateTime.Now, TreatmentReason = "Что-то", TreatmentSum = 6669d, IdClient = 1 } // Метод POST-запроса (добавление) // Treatment - модель (тип объекта), // int - тип id-шника // Возврат, результат выполнения запроса (объект), если не предусмотренно api, то null .Add<Treatment, int>(); treatment.TreatmentDate = DateTime.Parse("10.03.2022"); // Метод PUT-запроса (обновление) treatment = treatment.Update<Treatment, int>(); // Метод GET-запроса (получение) (работает по id) treatment = treatment.Get<Treatment, int>(); // Вывод объекта в консоль в формате JSON Console.WriteLine(treatment.ToJson()); // Метод DELETE-запроса (удаление) // Возврат - bool (удачное не удачное удаление) var result = treatment.Delete<Treatment, int>();Использование адаптера:
// Создаем объект var treat = new Treatment() { Id = 0, TreatmentDate = DateTime.Now, TreatmentReason = "Новое ещё раз 2", TreatmentSum = 9032022d, IdClient = 1 }; // Создаем адаптер, передаем объект ModelAdapter<Treatment, int> treatmentAdapter = new(treat); // Можно оставить пустой "new()", а для установки значения объекта использовать: treatmentAdapter.SetValue(treat); // Метод POST-запроса (добавление) treatmentAdapter.Add(); // Метод получения результата treat = treatmentAdapter.GetValue(); // Более короткая запись: // treat = treatmentAdapter.Add().GetValue(); treat!.TreatmentDate = DateTime.Parse("10.03.2022"); treatmentAdapter.SetValue(treat); // Метод PUT-запроса (обновления) treatmentAdapter.Set(); // Можно короче: // treatmentAdapter.SetValue(treat).Set(); // Get() - Метод GET-запроса (получение) (работает по id) // Вывод объекта в консоль в формате JSON Console.WriteLine(treatmentAdapter.SetValue(treat).Get().GetValue()!.ToJson()); // Метод DELETE-запроса (удаление) treatmentAdapter.Delete();
Обновление: Теперь чтобы получить значение обратно в переменную модели не обязательно присваивать ей результат (GetValue), достаточно передачи ссылки на неё:
// Создаем объект
var treat = new Treatment
{
Id = 0,
TreatmentDate = DateTime.Now,
TreatmentReason = "Допустим",
TreatmentSum = 9032022d,
IdClient = 1
};
// Создаем адаптер для него с передачей ссылки на treat и его значения
// Например при вызове метода Get будет изменяться и treat
// (работает в обратную сторону тоже, при изменении treat объект для GET-запроса будет меняться)
// В случае если ответ с запроса приходит пустым (например как у Delete), то значение объекта не изменяется
ModelAdapter<Treatment, int> treatAdapter = new(ref treat);
//Создаем адаптер для него с передачей только значения
ModelAdapter<Treatment, int> treatAdapter2 = new(treat);
//Создаем адаптер
//Значение полей класса выставляются по умолчанию
ModelAdapter<Treatment, int> treatAdapter3 = new();
// Устанавливает только значения из объекта
treatAdapter.SetValue(treat!);
// Устанавливает значение и ссылку на новый объект
treatAdapter.SetValue(ref treat);
// Метод POST-запроса (добавление)
treatAdapter.Add();
Console.WriteLine(treat!.ToJson());
Console.ReadKey(true);
// Метод GET-запроса (получение) (работает по id)
treatAdapter.Get();
Console.WriteLine(treat!.ToJson());
Console.ReadKey(true);
// Изменение объекта запроса
treat!.TreatmentReason = "Изменяем";
// Метод PUT-запроса (обновления)
treatAdapter.Set();
Console.WriteLine(treat.ToJson());
Console.ReadKey(true);
// Метод DELETE-запроса (удаление)
treatAdapter.Delete();
Console.WriteLine(treat.ToJson());
Для работы с получением списков:
ModelsAdapter<Treatment, int> treatmentsAdapter = new(); // Метод GET-запроса (получение) treatmentsAdapter.Get(); // Получение значения // Возврат - List<...?> // treatmentsAdapter.GetValue() // Или короче // treatmentsAdapter.Get().GetValue() // Получение значения и вывод списка в консоль в формате json Console.WriteLine(string.Join("\r\n", treatmentsAdapter.GetValue().Select(treatment => treatment!.ToJson()))); // Имеются и другие методы, которые находятся в тестировании.
Обновления:
Адаптер (пункт 2).
Добавлен метод Clone() для модели:
Treatment treat = new Treatment(); var tr = (Treatment)treat.Clone();
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 is compatible. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net5.0
- Newtonsoft.Json (>= 13.0.1)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.