2017-05-01 2 views
0

Ich versuche, eine API folgenden Jsonapi Spezifikation zu erstellen [http://jsonapi.org/]. Ich möchte nicht verwandte Daten von zwei verschiedenen Tabellen senden. Wie soll ich es senden? Ich kann es wie unten senden. Ist es der richtige Weg nach Spezifikationen? Idealerweise sollten wir separate Endpunkte für diesen Zweck haben, aber ich möchte aufgrund der zusätzlichen N/W-Anfrage keinen separaten Endpunkt erstellen.So senden Sie nicht verwandte Daten mit Jsonapi-Format

{ 
    data: [ 
    { 
     type: "user", 
     atrributes: { 
     ... 
     } 
    }, 
    { 
     type: "company", 
     attributes: { 
     ... 
     } 
    } 
    ] 
} 

Auch zur Zeit verwende ich ja_serializer [https://github.com/vt-elixir/ja_serializer/] Json zu serialisiert. Gibt es eine gute, nicht zusammenhängende Daten aus mehreren Tabellen zusammen zu serialisieren

Antwort

0

Kurze Antwort: Streng als JSON-API können Sie das nicht tun.

Lange Antwort:

0) keine unnötigen komplizieren Ihr Leben

sich fragen, ob der Nutzen zusätzliche Anforderung zu vermeiden, die zusätzliche Komplexität des Codes ist es wert. Wenn Sie Ihre Server unter HTTP/2 ausführen, ist der zusätzliche Netzwerk-Overhead sowieso minimal.

In vielen Fällen Sie finden Pay Rücken füllen, wenn Sie es einfach zu halten und in Zukunft getrennt - wenn Sie verschiedene Anfragen oder kombinieren nur Unternehmen mit einer anderen Art oder Ressourcen usw.

1) Wrap mehrere JSON- tun wollen API Antworten

Aber wenn Sie wirklich JSON-API und einzelne Anfrage wollen, was Sie tun können, ist vielleicht, um 2 JSON-API-Antworten zu einem zu wickeln. Some wie folgt aus:

{ 
    "responses": [{ 
    "name": "companies", 
    "jsonapi": {"data": ... } 
    }, { 
    "name": "users", 
    "jsonapi": {"data": ... } 
    }] 
} 

Und dann in Client können Sie diese brechen und den Einsatz in Standard-JSON-API-Bibliotheken als getrennte Ressourcen.

2) Versuchen gemeinsam „Eltern“ zu finden und verwenden relatoionship von JSON-API

Sie sagen, dass diese Ressourcen nicht verwandt sind, aber wenn Sie sie anfordern möchten zusammen müssen sie etwas gemeinsam haben. Vielleicht ist es etwas wie "Organisation" (Sie), die viele Unternehmen und Benutzer hat?

3) Andere Optionen

JSON-API gemeint Objekt REST Zuordnung standradize. Wenn Sie es nicht brauchen, ist JSON-API nicht für Ihren Zweck geeignet.

Vielleicht etwas wie GraphQL würde es besser für Sie passen. Oder gehen Sie einfach für Ihr proprietäres Format.

+0

Warum ist es laut Spezifikation nicht möglich? Der Schlüssel 'data' kann ein Array von Ressourcenobjekten sein, mit der einzigen Anforderung, dass jeder 'id' und 'type' hat. http://jsonapi.org/format/#document-resource-objects –

Verwandte Themen