Ich arbeite gerade an einer API und wollte nur Meinungen dazu sammeln, wo der beste Ort für die Übermittlung des API-Schlüssels sein sollte. Ich weiß, dass sollte nicht in der URL gehen, dies verlässt den Anforderungsheader oder den Nachrichtentext.
Wenn ich es in den Header setze, kann ich eine generische Methode zum Herausziehen finden, die für alle Services verwendet werden kann. Die angegebene Spezifikation möchte es jedoch im Body haben (dh in einem JSON-String, der als Teil von enthalten ist das serialisierte Objekt im POST-Body).
Antworten:
In HTTP gibt es dafür einen
Authorization
Header.Während es normalerweise verwendet wird, um Benutzeranmeldeinformationen bereitzustellen, kann es im Fall einer API die ID des Clients und den entsprechenden API-Schlüssel enthalten.
Es gibt mehrere Vorteile:
Unterstützung aus verschiedenen Frameworks. Viele Frameworks erwarten
Authorization
Header, um die Authentifizierung durchzuführen. Wird es nicht verwendet, muss zusätzlicher Code geschrieben werden, um diese Frameworks mit benutzerdefinierten Werten zu versorgen.Unterstützung durch verschiedene Tools. Zum Beispiel CURL.
Weniger "WTF wo finde ich diesen API-Schlüssel ?!" von neuen Entwicklern, die dem Team beitreten (oder Entwicklern, die neue Clients für Ihre API entwerfen).
Sie können dann HTTP-Statuscodedefinitionen verwenden
401 Unauthorized
, z. B . :Das Verschieben in den Hauptteil der Anforderung kann schnell schmerzhaft werden. Die meisten Frameworks und Tools machen es nicht sehr einfach, einer Anfrage einen Body hinzuzufügen, was Ihre API möglicherweise schwieriger macht, als es sein muss.
quelle