#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), которые затем вы можете прочитать, чтобы обновить значения таблицы / базы данных.