Как управлять POST-запросом в веб-API - PullRequest
0 голосов
/ 12 июня 2019

Как новичок, у меня проблемы с созданием программы REST Web API. Мои клиентские приложения POST-данные с информацией о лабораторных тестах пациента. Данные будут состоять из четырех полей, каждый из которых содержит информацию о пациенте и тесте, но количество тестов может варьироваться для каждого пациента.

Например: пациент с 1 тестом,

    {
     "patientID": 1121,
     "patientName": "BOB",
     "age": "22",
     "gender": "male",
     "TestID": 10,
     "TubeCode": "GRN",
     "TestName": "HIV",
     "TestCode": "GRN-CHM",
    }

Например: пациент с 2 тестами

   {
     "patientID": 1122,
     "patientName": "LINDA",
     "age": "26",
     "gender": "Female",
     "TestID": 12,
     "TubeCode": "GRN",
     "TestName": "HIV",
     "TestCode": "GRN-CHM",
     "TestID": 13,
     "TubeCode": "LAV",
     "TestName": "LFT",
     "TestCode": "LAV-CHM",
   }

Например: пациент с 3 тестами

  {
     "patientID": 1123,
     "patientName": "HARI",
     "age": "29",
     "gender": "male",
     "TestID": 14,
     "TubeCode": "GRN",
     "TestName": "HIV",
     "TestCode": "GRN-CHM",
     "TestID": 15,
     "TubeCode": "LAV",
     "TestName": "LFT",
     "TestCode": "LAV-CHM",
     "TestID": 16,
     "TubeCode": "SPC",
     "TestName": "SPC1",
     "TestCode": "SPC-CHM",
    }

Когда клиент отправляет POST все эти примеры, API должен иметь возможность получать эти данные.

Я пробовал много способов, таких как добавление объекта списка для тестовой информации. Но не смог завершить из-за моих плохих знаний.

     public void Post([FromBody] Patient_specimenInfo value)
     {           
      // I would like to know how can I manage the FROMBODY content here.
     }

Я знаю, как управлять фиксированным количеством пациентов и проверять информацию. Но здесь тестовая информация не фиксируется для пациентов ... Я надеюсь, что кто-то может дать мне лучшую логику, чтобы справиться с такой ситуацией.

Ответы [ 3 ]

1 голос
/ 12 июня 2019

Вы можете создать список тестов, таких как

public class Patient
{
  ...
  public List<Test> Tests{get;set;}
  .
  .
}

, а затем из клиентского приложения отправить json, например:

{
 "patientID": 1122,
 "patientName": "LINDA",
 "age": "26",
 "gender": "Female",
 "Tests":
 [
  {
  "TestID": 12,
  "TubeCode": "GRN",
  "TestName": "HIV",
  "TestCode": "GRN-CHM"
  },
  {
  "TestID": 13,
  "TubeCode": "LAV",
  "TestName": "LFT",
  "TestCode": "LAV-CHM"
  }
 ]
}
0 голосов
/ 12 июня 2019

вместо использования этого

public void Post([FromBody] Patient_specimenInfo value)
{           
   // I would like to know how can I manage the FROMBODY content here.
}

пожалуйста, измените его на

public void Post([FromBody] JObject value)
{           
      // here you can Convert the dynamic JObject to a Patient_specimenInfo object accordingly     
}
0 голосов
/ 12 июня 2019

При условии, что Json с тестом умножения не отформатирован.Вы можете использовать массивы Json для тестов.Смотрите эту ссылку https://www.w3schools.com/js/js_json_arrays.asp для более подробной информации.Например,

{
 "patientID": 1123,
 "patientName": "HARI",
 "age": "29",
 "gender": "male",
 "Tests":[{
   "TestID": 14,
   "TubeCode": "GRN",
   "TestName": "HIV",
   "TestCode": "GRN-CHM"
  },
  {
   "TestID": 15,
   "TubeCode": "LAV",
   "TestName": "LFT",
   "TestCode": "LAV-CHM"
  }]
}

И класс C # будет выглядеть так:

public class Patient_specimenInfo
{
    ...
    public Test[] Tests { get; set;}
    ...
}

public class Test
{
    public int TestID {get; set; }
    public string TubeCode {get; set; }
    public string TestName {get; set; }
    public string TestCode {get; set; }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...