2016-09-01 4 views
0

Ich brauche deine Hilfe. Ich denke über das Design der Backend-API für die mobile Anwendung. Sollte es REST-like oder etwas anderes sein?Web API Design für mobile App

Stellen Sie sich zum Beispiel vor, dass wir einige soziale Netzwerk-App erstellen. Es gibt eine Seite. Die Seite enthält:

  1. Benutzerinformation (einige Felder von Benutzerdomäne)
  2. Sammlung von Benutzernachrichten (nicht alle Felder von Nachrichtendomäne)
  3. Zahlenwert - Anzahl der Gäste
  4. Zahlenwert - zählen der Beiträge auf Benutzer Wand

ich sehe diese Optionen:

  1. erstellen Endpunkte für alle 4-Domänen und 4-Anfragen rufen:

    GET /users/111?fields=id,name,email 
    GET /users/111/messages?fields=id,text,date_created 
    GET /users/111/guests/count 
    GET /users/111/posts/count?filter=news 
    
  2. eine Methode erstellen für durch eine Anfrage

    GET /GetUserProfileInfo?userId=111 
    
  3. Andere Optionen

all diese Informationen bekommen

Das denkst du? Welche Variante ist besser? Was ist mit Leistung? Was ist die beste Vorgehensweise dafür?

Danke.

+0

In welchem ​​Rahmen wird das Frontend aufgebaut? !! – Aravind

+0

Ich denke es ist egal. In diesem Beispiel spreche ich von einer mobilen App, aber die Frage betrifft die Konzeption. –

+0

Ich hoffe, Sie wissen, dass die mobilen Anwendungen mit vielen Frameworks wie Javascripts, Java C#, XAML usw. gebaut werden können. Wie auch immer der Funktionsaufruf variieren kann und die Sicherheit wird auch variieren und es wird einfach sein, wenn Sie mir sagen können, welche Programmierumgebung Ihre Verwendung. – Aravind

Antwort

0

Die Frage, die Sie stellen, ist ziemlich breit, aber hoffentlich kann dies Sie in die richtige Richtung bringen.

Ich würde mit einer RESTful-Schnittstelle gehen, ich habe Erfahrung mit REST und SOAP API von mobilen Apps verbinden und REST ist definitiv einfacher.

Wenn es um die Endpunkte zuerst geht, denke ich, dass Sie möglicherweise Option 1 erneut besuchen möchten. Zum Beispiel, wenn die Nachricht eine separate Ressource ist, möchten Sie vielleicht mit/Nachrichten gefolgt von Suchparametern wie /messages?user=111 gehen. Aber das hängt wirklich davon ab, welche Ressourcen Sie darstellen möchten.

Für die zweite Option würde ich mit einem Verb gehen, Sie können nur ein Benutzerprofil basierend auf einem Benutzer erstellen. Und da es verschiedene Aspekte eines Benutzers auf die gleiche Weise für jeden Benutzer kombiniert, ist es mehr als nur eine Abfrage oder eine Reihe von Abfragen. Ich würde mit so etwas gehen /user/111/profile.

Für die Leistung ist es wahrscheinlich besser, das Back-End (vielleicht eine Datenbank) alle Daten für ein Benutzerprofil zusammen zu bekommen und es mit einer Anfrage abzurufen. In dem Szenario, in dem Sie alle Bits mit separaten Anforderungen abrufen, hängen Sie mit dem Overhead der zusätzlichen HTTP-Anforderungen fest.

Die meisten dieser Entscheidungen hängen wirklich von den Anforderungen der API ab. Auch gibt this question/answer eine sehr detaillierte Erklärung und sollte Ihnen wahrscheinlich auch helfen.

+0

Vielen Dank für Ihre Antwort. So wie ich es verstehe ist es üblich, REST als Back-End für die mobile App zu verwenden? Aber ich muss darüber nachdenken, Anfragenanzahl zu reduzieren, indem Sie benutzerdefinierte Ressourcen wie Profil erstellen? –

+0

Sie tun dies nicht unbedingt, um Anfragen zu reduzieren. Es ist auch eine klarere Art zu arbeiten. Wenn Sie möchten, dass Clients ein Benutzerprofil erhalten, warum sollten Sie sie selbst aus mehreren Anfragen zusammenstellen lassen? Daher ist es sinnvoll, ein Benutzerprofil über Ihre API verfügbar zu haben. – ophychius