Zum Hauptinhalt springen

Konsistenz über die X API v2 endpoints hinweg

Einer der wichtigsten Aspekte der neuen v2-Version der X API ist die Konsistenz über endpoints hinweg. Das bedeutet, dass zurückgegebene Objekte, Funktionen und das Verhalten der API bei ähnlichen endpoints einheitlich sind. Sie können davon ausgehen, dass die folgenden Elemente bei allen endpoints identisch sind:

Pfadbenennung

Die Pfadbenennung enthält immer die Version des endpoint, gefolgt von der Ressource. Darüber hinaus kann der Pfad eine ID enthalten, die sich auf die zuvor genannte Ressource bezieht, ein Auswahlverb, das dabei hilft festzulegen, welche Daten zurückgegeben werden (z. B. search oder sample), ein Lieferverb, das dabei hilft festzulegen, wie die Daten ausgeliefert werden (z. B. stream), oder andere Ressourcen, die eine Beziehung zur primären Ressource haben (z. B. /user/12/tweets). Schließlich können Sie am Ende einen Query-Parameter anhängen, wenn der endpoint Abfrageparameter enthält. Hier sind einige Beispiele dafür, wie diese Pfad- und Abfrageelemente organisiert werden könnten: /version/resource/id?param1=value&param2=value /version/resource/delivery/selection?param1=value&param2=value Beispiele für tatsächliche Anfragen: /2/tweets/1067094924124872705?expansions=attachments.media_keys&tweet.fields=author_id /2/users/2244994945?user.fields=created_at,description /2/tweets/search/stream /2/tweets/search/recent?query=snow

JSON Schema

Antworten auf Anfragen werden mithilfe von JSON Schema definiert. Das bedeutet, dass Anfragen konsistent Mengen von Objekten als Arrays zurückgeben, wobei jedes Element eine id besitzt. Anfragen geben keine Maps mit id als Schlüsseln zurück.

Antwortobjekt und Parameter

Das standardmäßig zurückgegebene Objekt ist für jedes endpoint dieses Objekttyps identisch:
  • id-Objekte sind immer Zeichenketten.
  • Parameter und Antwortfelder verwenden durchgehend amerikanische Rechtschreibung.
  • Felder sind leer oder werden nicht zurückgegeben, wenn kein Wert vorhanden ist.
  • Das entities-Objekt enthält nur Entitäten aus dem Post-Text: Dazu gehören urls, hashtags, mentions und cashtags.
  • Alle kartenbezogenen Informationen, einschließlich der Felder media_keys und poll_ids, werden im attachments-Objekt zurückgegeben.
Hier ist ein Beispiel für ein Antwortobjekt des endpoints single Post lookup (mit dem Parameter tweet.fields auf author_id, entities gesetzt):
{
   "data": {
       "id": "1278747501642657792",
       "text": "Seit dem Start der Twitter Developer Labs ist ein Jahr vergangen.\n\nWährend wir auf die nächste Generation der #TwitterAPI hinarbeiten (SEHR bald), erfahren Sie, was wir auf dem Weg gelernt und geändert haben. https://t.co/WvjuEWCa6G",
       "author_id": "2244994945",
       "entities": {
           "urls": [
               {
                   "start": 188,
                   "end": 211,
                   "url": "https://t.co/WvjuEWCa6G",
                   "expanded_url": "https://blog.x.com/developer/en_us/topics/tools/2020/a-year-with-twitter-developer-labs.html",
                   "display_url": "blog.x.com/developer/en_u…",
                   "images": [
                       {
                           "url": "https://pbs.twimg.com/news_img/1278747527043362816/7HQRkQeV?format=jpg&name=orig",
                           "width": 1600,
                           "height": 600
                       },
                       {
                           "url": "https://pbs.twimg.com/news_img/1278747527043362816/7HQRkQeV?format=jpg&name=150x150",
                           "width": 150,
                           "height": 150
                       }
                   ],
                   "status": 200,
                   "title": "Ein Jahr mit Twitter Developer Labs: Was wir gelernt und geändert haben",
                   "description": "Die Labs waren von unschätzbarem Wert und haben uns geholfen zu verstehen, was gut funktioniert und was nicht, was Ihnen gefallen hat und was nicht.",
                   "unwound_url": "https://blog.x.com/developer/en_us/topics/tools/2020/a-year-with-twitter-developer-labs.html"
               }
           ],
           "hashtags": [
               {
                   "start": 106,
                   "end": 117,
                   "tag": "TwitterAPI"
               }
           ]
       }
   }
}

Authentifizierung

Alle X API v2 Endpoints erfordern Authentifizierung. Viele von ihnen akzeptieren die Methode OAuth 2.0 Bearer Token, bei der ein Bearer Token zusammen mit der Anfrage an das Endpoint erforderlich ist, um eine erfolgreiche Anfrage zu stellen. Für Endpoints, die eine Autorisierung erfordern, um im Namen eines anderen Nutzers Daten zu erstellen, zu bearbeiten oder abzurufen, verwenden Sie OAuth 1.0a User Context. Das bedeutet, dass Sie die Developer App’s API keys and tokens sowie einen Satz nutzerspezifischer Access Tokens bereitstellen, die Sie für den Nutzer generieren, in dessen Namen Sie eine Anfrage stellen. Der 3-legged OAuth flow kann Ihnen helfen, Access Tokens abzurufen. Verwenden Sie ein Tool oder eine Library, die diesen Authorization-Header automatisch erstellt. Weitere Informationen zur Authentifizierung finden Sie in unserer Dokumentation zur Authentifizierung.

Felder

Das von jedem endpoint zurückgegebene Objekt ist komprimiert. Um Entwicklern mehr Anpassungsmöglichkeiten für die Antwort zu geben, die sie von der API erhalten, wird der Parameter fields verwendet, um die gewünschten fields anzufordern. Felder bleiben über endpoints hinweg konsistent. Das Post-Objekt gibt über alle endpoints, in denen das Post-Objekt zurückgegeben wird, dieselben fields zurück. Derselbe Satz von fields kann über ähnliche endpoints abgefragt werden. Zum Beispiel können dieselben Post fields in der Posts lookup und für den erweiterten angehefteten Post in der Users lookup abgefragt werden.

Expansions

Wo es sinnvoll ist, sind expansions für alle verschachtelten id-Felder verfügbar (z. B. alle Felder mit dem Namen *_id, wie author_id). Expansions sind auch für alle Felder verfügbar, die eine id enthalten, die nicht der Top-Level-Bezeichner des aktuellen Objekts ist. Im Posts Lookup ist beispielsweise der Post das aktuelle Objekt, wobei das Feld id der Top-Level-Bezeichner ist. Die Felder author_id oder referenced_tweets.id können zu vollständigen User- bzw. Post-Objekten erweitert werden, indem diese durch Komma getrennten Werte dem Parameter expansions hinzugefügt werden. Bitte melden Sie eventuelle Unstimmigkeiten, die Ihnen in Bezug auf diese fields auffallen.
I