Как выполнить ПУБЛИКАЦИЮ или ОБНОВЛЕНИЕ на сервере restful api

#rest #delphi #server

#rest #delphi #сервер

Вопрос:

В настоящее время я создаю сервер restful API для своих мобильных устройств для доступа к базе данных MySQL. Мобильные приложения должны иметь возможность получать данные с сервера, а также вставлять и редактировать данные.

Мне удалось успешно выполнить получение с сервера, но я застрял в том, как получить сообщение. В WebModuleUnit я добавил действие со следующими свойствами: MethodType mtGet Name actImsDocuments PathInfo /imsDocuments

 procedure TWebModule1.WebModule1actImsDocumentsAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
  var
  qryDocuments: TFDQuery;
  JsonArray: TJSONArray;
  JsonObject: TJSONObject;
begin
 // Configure response
 Response.ContentType := 'application/json; charset=utf-8';

//Search for my clients table
qryDocuments := TFDQuery.Create(nil);
with qryDocuments do
begin
  Connection := FDConnection1;
  Active := false;
SQL.Clear;

Open('SELECT * FROM ims_document');

if qryDocuments.RecordCount > 0 then //if there is items
begin
   JsonArray := TJSONArray.Create;
   try
     First;
     while not EoF do //Iterate all items in the FDQuery
     begin
       JsonObject := TJSONObject.Create;
       AddFieldsToJSON(JsonObject, qryDocuments);
       JsonArray.AddElement(JsonObject);
       Next;
     end;
   finally
      Response.Content := JsonArray.ToString;
      JsonArray.DisposeOf;
   end;
end;
 end;
end;

    procedure TWebModule1.AddFieldsToJSON(AJsonObject: TJSONObject;
       AQuery: TFDQuery);
       begin
        with AQuery do
        begin
          AJsonObject.AddPair('number', TJSONNumber.Create(FieldByName('number').AsInteger));
          AJsonObject.AddPair('document_title', FieldByName('document_title').AsString);
       end;
    end;
  

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

Если я изменю свойство действия на mtPost, как будет отличаться мой код, если я захочу добавить запись в таблицу?

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

1. Вы могли бы просто использовать компонент TFDQuery, а затем использовать инструкцию SQL UPDATE или просто выполнить другой ВЫБОР и фильтр по идентификатору записи. Затем вы можете использовать методы TDataSets ‘edit’ и ‘post’ или ‘delete’.

2. Я понимаю, что могу использовать вставку В SQL или использовать обычную таблицу insert и post, но часть, которую я не понимаю, заключается в том, как мне считывать значения, поступающие с устройства на сервер. Должен ли я написать код, аналогичный приведенному выше, а затем просто использовать ASjonObject для чтения значений входящего устройства для вставки или редактирования таблицы?

3. В принципе, да, объект ‘request’ должен иметь свойство, содержащее опубликованные данные (json), которые затем вы можете прочитать, чтобы обновить значения таблицы / базы данных.