Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TMS Webcore app mit DB auf gehosteten Systemen (https://www.delphipraxis.net/211930-tms-webcore-app-mit-db-auf-gehosteten-systemen.html)

noisy_master 23. Nov 2022 11:55

TMS Webcore app mit DB auf gehosteten Systemen
 
Hallo liebe Gemeinde,

ich bastele gerade ein bisschen mit den TMS WebCore und FNC Komponenten rum. Programme mit diesen Komponenten erzeugen ja nach dem compilieren ein paar .html und .js Dateien, die man auch locker auf einen gehosteten Webspace bei z.B. StraXXX oder IonoXXX, oder wem auch immer hochladen kann.

Nun hätte ich 2 Fragen:
- Bekommt man es irgendwie hin, dass sich eine solche Webcore App mit einer Datenbank(die ja häufig zu Hostingpaketen gehört) "direkt" verbindet? Wenn ja, wie?
- Kann man diese Webcore App mit einem z.B. XData Server ausstatten, so dass man über diesen die "DB von aussen" mit einem XData Client erreichen kann? Wenn ja, wie?


Danke schon mal wieder vorab an die schlaue Gemeinde

jaenicke 23. Nov 2022 13:58

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von noisy_master (Beitrag 1515229)
- Bekommt man es irgendwie hin, dass sich eine solche Webcore App mit einer Datenbank(die ja häufig zu Hostingpaketen gehört) "direkt" verbindet? Wenn ja, wie?

Die App läuft auf dem Client. Du kannst von dort aus zwar zu einer in das Internet exponierten DB verbinden, aber das ist keine gute Idee, weil die App dafür die Zugangsdaten benötigt. Auf dem Server läuft bei TMS Web Core kein Code.

Zitat:

Zitat von noisy_master (Beitrag 1515229)
- Kann man diese Webcore App mit einem z.B. XData Server ausstatten, so dass man über diesen die "DB von aussen" mit einem XData Client erreichen kann?

Das kann man, aber dieser Server läuft nicht auf einem einfachen Webhosting Paket. Dafür brauchst du z.B. einen Virtual Server oder Root Server.

Rollo62 23. Nov 2022 15:53

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Normalerweise läuft da auch PHP.
Und WebCore ist HMTL-basiert, also könnte man es in ein PHP z.B. per Formular einbinden.
https://www.w3schools.com/php/php_forms.asp

Natürlich kann es auch eine vollständige REST-API sein, in PHP, aber der native PHP-Ansatz ist vieleicht für einfache Dinge ausreichend.

TigerLilly 23. Nov 2022 21:11

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Auf gehostetem WebSpace läuft in der Regel PHP + da kannst du zB
https://github.com/mevdschee/php-crud-api
aufsetzen. Damit kannst du deine DB, die ja am Server läuft, vom Client, wo die TMS WebCore Anwendugn läuft, via REST API ansprechen. Funktioniert super.

Rollo62 24. Nov 2022 08:02

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von TigerLilly (Beitrag 1515258)

Ja, das ist eine schöne Library.
Sowas Ähnliches habe ich auch im Einsatz, hatte ich aber nicht genannt um nicht den Eindruck zu erwecken dass dies völlig Problemfrei ist.
Wenn man nur einfach Libraries benutzt oder selber hackt können schnell Sicherheitslücken auftreten.

Ich habe jetzt noch nichts mit php-crud-api gemacht, das sieht aber soweit OK aus.
Hast Du Erfahrungen damit in welche Fettnäpfchen man treten kann ?
Ich habe bei "selbstgemachtem" PHP-Server immer ein bischen das Gefühl eine Sicherheitslücke übersehen zu haben,
vielleicht schaue ich mir php-crud-api auch mal näher an, das scheint auch auf einem sehr guten Stand zu sein.

Auch Laravel und andere aktuellen PHP System sind nicht völlig pflegeleicht und ich suche auch immer noch eine 100% wasserdichte Implementierung.
Leider zeigen die dort immer nur Teilbeispiele aber selten ganze Projekte von A bis Z.
Der Vorteil z.B. von Laravel ist die super Pflege und die Millionen User.

Generell würde ich für sowas sogar fast empfehlen einfach ein Wordpress aufzusetzen.
Das hat auch eine REST-Schnittstelle an die man sich anhängen könnte.
Das ist auch super gepflegt und sicherheitstechnisch auf dem letzten Stand, das bischen Overhead vom CMS macht keine Probleme.

Wenn man sich sowas selber baut hat man immer das Problem der Pflege, schnell veralten die Libraries und Updates sind nicht immer leicht einzuspielen.
Bei Wordpress ist das relativ gut optimiert, mit richtigem Dashboard, und das kann sich regelmäßig selbst updaten.

TigerLilly 25. Nov 2022 06:41

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von Rollo62 (Beitrag 1515264)
Ich habe jetzt noch nichts mit php-crud-api gemacht, das sieht aber soweit OK aus.
Hast Du Erfahrungen damit in welche Fettnäpfchen man treten kann ?

Für die Entwicklung mit TMS WebCore wollte ich den Client auf und von meinem Entwicklungsrechner laufen lassen + habe mit CORS gekämpft + es wollte mir nicht gelingen, das PHP seitig zu lösen. Also hab ich es einfach als Feature verstanden und der Clientmuss vom Server mit der DB geladen werden. Aber ich bin kein PHP Profi und vielleicht übersehe ich da was. Da das API eine einzige Datei ist, kann das auch serverseitig gut abgesichert sein. Und die API funktioniert out-of-the-box, das ist sehr praktisch.

noisy_master 25. Nov 2022 08:30

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hallo TigerLilly,

vielen Dank erstmal für die gute Idee.

Zitat:

Zitat von TigerLilly (Beitrag 1515340)
Für die Entwicklung mit TMS WebCore wollte ich den Client auf und von meinem Entwicklungsrechner laufen lassen + habe mit CORS gekämpft + es wollte mir nicht gelingen, das PHP seitig zu lösen. Also hab ich es einfach als Feature verstanden und der Clientmuss vom Server mit der DB geladen werden. Aber ich bin kein PHP Profi und vielleicht übersehe ich da was. Da das API eine einzige Datei ist, kann das auch serverseitig gut abgesichert sein. Und die API funktioniert out-of-the-box, das ist sehr praktisch.

Aber: hast du zufällig Erfahrung mit den CRUP-PHP? Ich habe gestern versucht das Ganze auf einem bei IonXXX gehosteten Server zum Laufen zu bekommen, aber leider mit wenig Erfolg. connection zur bei ionXXX gehosteten DB konfiguriert, bekomme aber immer ein "Route '' not found"... Hast du zufällig irgendeine Idee? Gibt es zu der CRUD PHP API irgeneine FAQ oder ein Forum?

TigerLilly 25. Nov 2022 09:14

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Was für eine DB magst du denn erreichen? Liegt die auf demseblen Server wir das PHP Script?
Kommst du denn mit einem Tool an deine DB?

Für mich hat es genügt, die DB Paramter zu setzen + alles hat funktioniert.

noisy_master 25. Nov 2022 12:01

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von TigerLilly (Beitrag 1515350)
Was für eine DB magst du denn erreichen? Liegt die auf demseblen Server wir das PHP Script?
Kommst du denn mit einem Tool an deine DB?

Für mich hat es genügt, die DB Paramter zu setzen + alles hat funktioniert.

letzteres freut mich sehr für dich 8-)
Ich habe ein Hosting ink MySQL DBs bei IonXXX.... ob das der (physikalisch) gleiche Server ist kann ich dir natürlich nicht beantworten. Aber ich komme mit "normalen" php Scripts auf die DB(unter Angabe des Users, Passworts, DB Namen und Host)... Das habe ich auch mit der CRUD API gemacht, aber da funktioniert es leider nicht...wäre ja auch zu schön, wenn es so einfach gewesen wäre:x

TigerLilly 25. Nov 2022 12:06

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Eigentlich klingt das eher danach, dass das copnnect schon funktioniert, aber du eeine falsche Abfrage an das API absetzt.

Das da 1000 => ["Route '%s' not found", ResponseFactory::NOT_FOUND] ist eine Meldung der API.

Nimm doch mal den REST Debugger von EMBA und mqach dich mit der Abfragesyntax vertraut.

noisy_master 25. Nov 2022 12:31

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Okay, vielleicht bin ich auch einfach nur zu blöde ...

Du hast ja scheinbar eine CRUD API auf irgendeinem Server laufen. Die CRUD API hat ja auch einen Endpunkt mit /status/ping. Wie sieht denn dazu der Aufruf in einem Browser aus? Wenn ich
http://xxxxxx.xxx/api.php?status/ping eingebe bekomme ich die schon genannte Fehlermeldung. Eigentlich laut Seite soll da ja ein ReturnCode 200 und sowas:
{
"db": 42,
"cache": 9
}
(in der Art)rauskommen.....
Wie sieht das bei dir aus? Oder habe ich den Aufruf schon falsch?

TigerLilly 25. Nov 2022 15:44

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hast du eine Middleware aktiviert in der Konfiguration?
Dort kannst du auch den Debugmodus aktivieren.
Und: Teste das nicht im browser sondern im REST debugger.

noisy_master 28. Nov 2022 07:05

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Sorry für die späte Antwort.
An der Konfiguration für die Middleware habe ich zumindest nichts geändert. Damit müsste es wohl CORS sein.

Ja, mit dem EMBA Rest Debugger werde ich es beizeiten versuchen, wäre dir aber trotzdem dankbar, wenn du mal bei dir per Browser den status/ping Endpoint ausprobieren könntest und das Ergebnis hier postest..

DANKE und Gruß

TigerLilly 28. Nov 2022 16:48

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Lass das ? weg:
http://xxxxxx.xxx/api.php/status/ping

noisy_master 28. Nov 2022 17:41

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Danke für die Info.

Irgendwie funktioniert das auf dem gehosteten System leider nicht(was auch immer ich falsch gemacht habe). Habe mir lokal nen XAMPP aufgesetzt und es funktioniert sofort.
Eine Frage hätte ich noch: Was für eine TMS Connection(und wie konfiguriert) hast du zur Verbindung zu der API genutzt?
Wenn du gaanz viel Muße hast hast du ja vielleicht sogar ein funktionierendes Snippet für mich :angel:

mytbo 28. Nov 2022 19:07

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von noisy_master (Beitrag 1515544)
Wenn du gaanz viel Muße hast hast du ja vielleicht sogar ein funktionierendes Snippet für mich :angel:

Delphi-Quellcode:
procedure ...RequestValue(pmResultProc: TProcBoolean);

  //-------- local function -------------------------------------------

  function DoHandleResponse(_pmEvent: TEventListenerEvent): Boolean;
  var
    rspJson: String;
    rspStatus: Integer;
    rspObject: TJSObject;
  begin
    asm
      rspJson = _pmEvent.target.responseText;
      rspStatus = _pmEvent.target.status;
    end;

    if rspStatus = 200 then
    begin
      rspObject := TJSJson.parseObject(rspJson);
      ...
    end;

    pmResultProc(...);
    Result := True;
  end;

  //-------- end local function ---------------------------------------

var
  req: TJSXmlHttpRequest;
  requestUrl: String;
begin
  asm
    var url = new URL(this.FServiceUrl);
    url.searchParams.append('accessToken', this.FAccessToken);
    requestUrl = url.toString();
  end;

  req := TJSXmlHttpRequest.new;
  req.addEventListener('loadend', @DoHandleResponse);
  req.open('GET', requestUrl);
  req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  req.send;
end;
Der Request in der Funktion läuft asynchron ab. Wenn du auf den Aufruf warten musst, verwende eine Promise.
Delphi-Quellcode:
function ...LoadValue: TJSPromise;
begin
  Result := TJSPromise.new(
    procedure(pmSuccess, pmFailed: TJSPromiseResolver)
    begin
      RequestValue(
        procedure(pmValue: Boolean)
        begin
          pmSuccess(pmValue);
        end);
    end);
end;
Benutzen kannst du es so:
Delphi-Quellcode:
procedure ...btnLoadValueClick(Sender: TObject);

  //-------- local function -------------------------------------------

  function HandleLoadValue(pmValue: JSValue): JSValue;
  begin
    Result := pmValue;
    btnLoadValue.Enabled := True;
    ShowMessage('Value available: ' + TJSString(pmValue).ToString);
  end;

  //-------- end local function --------------------------------------- 

begin
  btnLoadValue.Enabled := False;
  LoadValue._then(@HandleLoadValue);
end;
Bis bald...
Thomas

noisy_master 29. Nov 2022 10:31

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hallo Thomas,

Danke für dein Beispiel! Wenn ich das richtig sehe hat das aber nichts mehr mit TMS geschweige denn mit TMS Web Core zu tun, oder habe ich da jetzt was falsch verstanden?

Gruß

TigerLilly 29. Nov 2022 10:33

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von noisy_master (Beitrag 1515544)
Wenn du gaanz viel Muße hast hast du ja vielleicht sogar ein funktionierendes Snippet für mich :angel:

Mach ich gerne - dauert nur ein bissl. Sorry.
Funktioniert extrem cool und nahezu ohne Code. Was mytbo zu Fuß macht, machen die TMS Komponenten von selbst.

noisy_master 29. Nov 2022 10:55

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von TigerLilly (Beitrag 1515593)
Mach ich gerne - dauert nur ein bissl. Sorry.
Funktioniert extrem cool und nahezu ohne Code. Was mytbo zu Fuß macht, machen die TMS Komponenten von selbst.

Kein Problem, freue mich ja über jede Hilfe ;-) Vielen Dank schon mal vorab....bin schon ganz gespannt

TigerLilly 29. Nov 2022 14:02

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Ich habe aus der DFM das wichtigste rauskopiert:
Code:
object conNaehrwerte: TWebClientConnection
    Active = False
    Headers.Strings = (
      'X-API-Key=12345678')
    DataNode = 'records'
    URI =
      'https://www.nutritional-software.at/api.php/records/TBLXY?filter=COL1,eq,ABC'
    Left = 1134
    Top = 568
  end
  object cdsNaehrwerte: TWebClientDataSet
    Connection = conNaehrwerte
    Params = <>
    Left = 1265
    Top = 561
  end
Also
1) TWebClientConnection aufs Formular und bestücken
2) TWebClientDataSet damit verbinden
3) active = true

Weiter kannst du mit TWebDataSource und dann auch schon visuelle Kompopnenten zB TWebDBEdit anbinden. Ich habe zuerst nur die TWeb*-Sachen verwendet, aber hier kann man auch alles aus TTMSFNC* benutzen.

Ich habe zu Beginn mit CORS gekämpft, aber wenn das API und der DB Server auf demseblen Server sind, ist das kein Thema. Der REST-Debugger war sehr hilfreich beim Verstehen, was im Header etc stehen muss bzw dann zurückgeliefert wird.

Achja: Oben das
Code:
 Headers.Strings = (
      'X-API-Key=12345678')
steht da nur, weil ich als Middleware die Authentifizierung aktiv habe. Wenn du die nicht hast, brauchst du den header gar nicht setzen.

Hilft dir das mal?

noisy_master 29. Nov 2022 17:05

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hi TigerLilly,

super, tolle hilfe, funktioniert bei mir aber leider nicht:
alles noch lokal
im Browser: http://localhost/api.php/records/customers
ergibt
{"records":[{"id":1,"company":"Company A","last_name":"Bedecs","first_name":"Anna","email _address":null,"job_title":"Owner","business_phone ":"(123)555-0100","home_phone":null,"mobile_phone":null,"fax_n umber":"(123)555-0101","address":"123 1st Street","city":"Seattle","state_province":"WA","zi p_postal_code":"99999","country_region":"USA","web _page":null,"notes":null,"attachments":""},{"id":2 ,"company":"Company B","last_name":"Gratacos Solsona","first_name":"Antonio","email_address":nu ll,"job_title":"Owner","business_phone":"(123)555-0100","home_phone":null,"mobile_phone":null,"fax_n umber":"(123)555-0101","address":"123 2nd Street","city":"Boston","state_province":"MA","zip _postal_code":"99999","country_region":"USA","web_ page":null,"notes":null,"attachments":""},{"id":3, "company":"Company C".....
Das Ganze mit
Rest Explorer 1.2 auf http://localhost/api.php/records/customers versucht...liefert auch Ergebnisse

dann in Delphi:
Delphi-Quellcode:
object Form1: TForm1
  Width = 1096
  Height = 681
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  FormContainer = 'appcontent'
  ParentFont = False
  OnCreate = WebFormCreate
  object WebLabel1: TWebLabel
    Left = 24
    Top = 40
    Width = 180
    Height = 16
    Caption = 'Click on column headers to sort'
    ElementID = 'description'
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    HeightPercent = 100.000000000000000000
    ParentFont = False
    WidthPercent = 100.000000000000000000
  end
  object WebLabel2: TWebLabel
    Left = 24
    Top = 8
    Width = 62
    Height = 13
    Caption = 'DBGrid Demo'
    ElementID = 'title'
    HeightPercent = 100.000000000000000000
    WidthPercent = 100.000000000000000000
  end
  object WebDBGrid1: TWebDBGrid
    Left = 24
    Top = 59
    Width = 1049
    Height = 470
    Columns = <
      item
        DataField = 'Company'
        Title = 'Company'
      end>
    DefaultRowHeight = 80
    DataSource = WebDataSource1
    FixedCols = 0
    Font.Charset = DEFAULT_CHARSET
    Font.Color = clWindowText
    Font.Height = -13
    Font.Name = 'Tahoma'
    Font.Style = []
    Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goRowSelect]
    ParentFont = False
    TabOrder = 0
    HeightPercent = 100.000000000000000000
    WidthPercent = 100.000000000000000000
    OnFixedCellClick = WebDBGrid1FixedCellClick
    ColWidths = (
      64)
    RowHeights = (
      80
      80
      80
      80
      80)
  end
  object WebClientConnection1: TWebClientConnection
    Active = True
    URI = 'localhost/api.php/records/customers/'
    Left = 464
    Top = 544
  end
  object WebDataSource1: TWebDataSource
    DataSet = WebClientDataSet1
    Left = 624
    Top = 552
  end
  object WebClientDataSet1: TWebClientDataSet
    Connection = WebClientConnection1
    Params = <>
    Left = 256
    Top = 552
    object WebClientDataSet1Brand: TStringField
      FieldName = 'Company'
      Size = 256
    end
  end
end
liefert mir
ERROR
Error connecting to URI localhost/api.php/records/customers/ | fMessage::Error connecting to URI localhost/api.php/records/customers/ FJSError::Error: Error connecting to URI localhost/api.php/records/customers/ fHelpContext::0
at http://localhost:8000/TMSWeb_DBGrid/TMSWeb_DBGrid.js [259:48]
auf
http://localhost:8000/TMSWeb_DBGrid/index.html

und die gleiche Fehlermeldung bekomme ich auch schon, wenn ich ich mir im Designer auf WebClientDataset die Felder holen will...

Bin ich zu doof, oder was ist hier los?

noisy_master 29. Nov 2022 17:11

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von noisy_master (Beitrag 1515619)
Bin ich zu doof, oder was ist hier los?

Okay, ein bisschen schon: wenn ich zur URI ein http:// hinzufüge bekomme ich zumindest keinen Connection Error mehr, aber dafür in der App immer noch ein leeres Dataset. Und wenn ich im Designer versuche die Felder für das WebDataset holen zu lassen bekomme ich die Fehlermeldung, dass das automatische erzeugen der Felder fehlgeschlagen wäre :-(

mytbo 29. Nov 2022 18:20

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von noisy_master (Beitrag 1515592)
Danke für dein Beispiel! Wenn ich das richtig sehe hat das aber nichts mehr mit TMS geschweige denn mit TMS Web Core zu tun, oder habe ich da jetzt was falsch verstanden?

Doch, das ist TMS WebCore. Habe im Eingangspost überlesen, dass du die Anbindung mit dem XData Server erledigen willst. Bei Frameworks die TMS WebCore nicht unterstützt, musst du die Anbindung selbst schreiben. Mein Beispiel zeigt, wie das allgemein bewerkstelligt wird. Im konkreten Fall folgst du besser dem Rat von TigerLilly.

Bis bald...
Thomas

noisy_master 29. Nov 2022 22:03

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
So, jetzt habe ich es: in der WebCLientConnection musste noch der DataNode auf "records" gesetzt werden!

Danke euch allen...jetzt kann es weitergehen

TigerLilly 30. Nov 2022 10:16

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
:- ) Stand aber im Beispiel drin. Gut, dass es jetzt funkt. Viel Spaß!

noisy_master 12. Dez 2022 21:28

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
So, und jetzt habe ich es auch endlich auf dem gehosteten System laufen:

für die, die vielleicht ein ähnliches Problem haben: ich musste in der api.php nocht den basePath auf '/api.php' stzen..... Das soll einer ahnen ;-)

Aber Danke nochmal an alle für diesen coolen Tip... jetzt werde ich das nochmal mit Berechtigungen testen ... mal schauen, wie lange ich brauche, um das zum Laufen zu bekommen ;-)

TigerLilly 13. Dez 2022 05:52

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zumindest mit ApiKey war das ganz unkompliziert:
Code:
  $config = new Config([
         'driver' => 'mysql',
         'address' => 'xxx',
        // 'port' => '3306',
        'username' => 'xxx',
        'password' => 'xxx',
        'database' => 'xxx',
--->    'middlewares'=>'apiKeyAuth',
--->    'apiKeyAuth.keys'=>'abc,def', // da sind mehrere möglich
        'debug' => false
    ]);
Und in der Connection setzt du im Code oder zur Designtime
Code:
Connection.Headers.Add('X-API-Key=abc');

noisy_master 15. Dez 2022 08:43

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hallo TigerLilly,

du scheinst ja schon viel Erfahrung mit dem Setup zu haben.
Das mit dem Daten holen funktioniert wunderbar, auch mit dem APIKey(Danke dafür nochmal!!!).

Jetzt bin ich aber auf das nächste Problem gestoßen: Ich würde nun gerne die Daten die ich über die CRUD -API erhalten habe aus der Webcore Anwendung auch aktualisieren, aber ApplyUpdates,Post oder was auch immer geht gar nicht als request an die CRUD-API raus... Hast du eine Idee, was ich jetzt wieder falsch bzw. vergessen habe mache...oder geht das gar nicht?

Gruß

TigerLilly 15. Dez 2022 09:16

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
:-) Freut mich, wenn ich hefen konnte.

In ReadMe zur API steht:
Code:
#### Update

To update a record in this table the request can be written in URL format as:

    PUT /records/posts/1

Where "1" is the value of the primary key of the record that you want to update. Send as a body:

    {
        "title": "Adjusted title!"
    }

This adjusts the title of the post. And the return value is the number of rows that are set:

    1
Das Updaten geht analog zum Lesen, nur mit PUT statt GET.
TWebClientConnection hat eine Property Command, mit der du das machen kannst. Ich hab grad keine Zugriff auf meinen Code, ich such das später raus.

noisy_master 15. Dez 2022 10:35

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Zitat:

Zitat von TigerLilly (Beitrag 1516197)
:-) Freut mich, wenn ich hefen konnte.

In ReadMe zur API steht:
Code:
#### Update

To update a record in this table the request can be written in URL format as:

    PUT /records/posts/1

Where "1" is the value of the primary key of the record that you want to update. Send as a body:

    {
        "title": "Adjusted title!"
    }

This adjusts the title of the post. And the return value is the number of rows that are set:

    1
Das Updaten geht analog zum Lesen, nur mit PUT statt GET.
TWebClientConnection hat eine Property Command, mit der du das machen kannst. Ich hab grad keine Zugriff auf meinen Code, ich such das später raus.


Ja, das mit der CRUD API habe ich gelesen, und wenn ich das über nen Rest Explorer mache funktioniert es auch... Mir ist nur gerade trotz Lesen der TWebClientConnection völlig unklar, was zu machen ist ... Aber ich freue mich schon auf deinen nächsten Code-Snippet.. der ist dann bestimmt wieder so hilfreich wie die Teile zuvor ;-)

Gruß

TigerLilly 19. Dez 2022 14:54

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Es ist ein bissl komplizierter. WebClientDataset.GetPendingUpdates gibt dir an, welche Updates du via REST zum Server schicken musst. Diese Anweisungen musst du dir zusammenbauen (RIT, JSON) und per TWebHTTPRequest an deinen Server schicken.

noisy_master 21. Dez 2022 19:36

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hallo Tigerlilly,

Zitat:

Zitat von TigerLilly (Beitrag 1516411)
Es ist ein bissl komplizierter. WebClientDataset.GetPendingUpdates gibt dir an, welche Updates du via REST zum Server schicken musst. Diese Anweisungen musst du dir zusammenbauen (RIT, JSON) und per TWebHTTPRequest an deinen Server schicken.

Das ist ja schade, dass man das mit Umwegen machen muss... Aber erstmal vielen Dank! Ich werde es mal ausprobieren!!

noisy_master 22. Dez 2022 10:39

AW: TMS Webcore app mit DB auf gehosteten Systemen
 
Hallo TigerLilly,

bisschen kompliziert ist gut: WebClientDataset.GetPendingUpdates ist leider nirgendwo dokumentiert, noch gibt es Democode dazu:oops:...
Da du das ja schon gelöst zu haben scheinst: Könntest du bitte nochmal ein kleines Snippet dazu einstellen?

Danke im Voraus!

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz