2016-04-05 7 views
1

Say ein Nutzer ein GET für ein Unternehmen alle Dienstleistungen zurückzukehren, indem Sie die folgende URL ein: /api/company/{id}/serviceNested-IDs in REST-API-URL

Sie wollen dann eine der Dienstobjekte aktualisieren, die zurückgegeben werden. Sollte ich der gleichen Konvention folgen und sie so zu PUT zu /api/company/{id}/service/{id} bringen oder es ein bisschen einfacher machen und sie einfach dazu bringen, PUT zu /api/service/{id} zu tun, da die Service-ID global einzigartig ist.

Ein Grund, warum ich die längere URL gemacht habe, ist, dass ich überprüfen möchte, ob der Benutzer dem Unternehmen gehört, damit ich das auf Anfrage überprüfen kann, da ich die Firmen-ID habe, aber wenn ich den direkten Weg gehen würde dann müssen Sie die Firmen-ID aus dem Service finden und überprüfen.

Ich hatte eine schnelle Suche und konnte nicht erkennen, was der Standard dafür ist.

Dank

+0

Dies ist etwas, das viele Debatten bringen wird, aber es gibt keinen "Standard", den ich kenne.Einer oder beide sind in Ordnung; Ich habe Designs entworfen, die den Zugriff von beiden URLs gleichzeitig erlauben, sowie Designs, die das eine oder das andere verwenden würden. – CodingGorilla

+0

Es spielt keine Rolle, ob die Service-ID eindeutig ist oder nicht. Es kommt nur darauf an, ob die Dienstleistung dem Unternehmen gehört. Wenn ja (was ich denke, dass es ist), dann sollten Sie bei/api/company/{id}/service/{id} bleiben – falcon

Antwort

1

denke ich jede Antwort auf diese Art von Frage ein wenig umstritten ist, weil die beiden Ansätze, die Sie vom Konzept vorgeschlagen sind beide richtig, trotzdem werde ich zu beantworten versuchen.

Meiner Meinung nach müssen Sie sich entscheiden, ausgehend von der Beziehung zwischen Ihrer company Ressource und Ihrer service Ressource. Wenn ein service ausschließlich im Besitz eines einzigen company ist, dann würde ich für den ausführlicheren Pfad gehen /api/company/{id}/service/{id}. Wenn stattdessen Ihre service Ressourcen unter verschiedenen company Ressourcen geteilt werden, würde ich den kürzeren und globalen Pfad /api/service/{id} bevorzugen.

Die Gründe für meine Entscheidungen sind rein konventioneller Natur und sollen klären, wie die beiden Ressourcen in der Anwendungsdomäne miteinander interagieren.

+1

Ein Dienst wird ausschließlich von einer einzigen Firma gehört, also werde ich für die längere Route als gehen du schlugst vor. Dies erleichtert es mir auch, die Autorisierung zu überprüfen, da ich die Firmen-ID und Service-ID von der URL und auch die Benutzer-ID von ASP.Net Identity kenne, so dass ich einfach mit den URL-Parametern auswählen kann – ADringer

0

Ich denke, können Sie die URI nur die IDs zurück geschnitten, zum Beispiel:

POST/api/{CompanyID}/{serviceid}

Sie so etwas wie dieses haben :

POST/api/movistar/Balance
POST/api/movistar/Vertrieb

0

Erstens, lassen Sie Ihre Kunden Links folgen, anstatt "Vorlagen" zu verteilen, wie bestimmte Dinge aufgerufen werden. (Vielleicht machst du das schon, es ist nicht klar aus deinem Post).

Das heißt, wenn sie GET die Ressource, die alle Dienste auflistet, sollten Sie Links zu diesen Diensten (was auch immer sie sind). Auf diese Weise müssen Ihre Kunden den von Ihnen angegebenen URI PUT eingeben. Auf diese Weise haben Sie die vollständige Kontrolle über die URI-Struktur.

Dies wiederum bedeutet, dass Sie die Struktur verwenden können, die für Sie bequemer ist, da sie für die Clients sowieso transparent ist. Wenn Sie beide IDs besser in den URI aufnehmen möchten, gehen Sie vor. Sie können es später sogar ändern, wenn Sie es nicht mögen, ohne dass die Kunden es bemerken!