2017-12-20 6 views
0

Also versuche ich Python zu lernen, damit ich mit einer API arbeiten kann. Das Tutorial, das ich benutzte, benutzte Python 2 und Urllib. Ich habe Python 3.6 ausgeführt, also hat es nicht funktioniert. Also beschloss ich, über Anfragen zu lernen. Ich habe ein bisschen Probleme bei der Konvertierung von Urlib zu Anfragen.Parameter in Anfragen

import requests 
import json 

parameters = {"apikey": "mykey", "queries": "SN74S74N"} 

response = requests.get("http://octopart.com/api/v3/parts/match", params = 
parameters) 
data = response.json() 


#print(type(data)) 
print(data) 

Die Störung, die ich erhalte, wenn ich laufen diese

{'message': 'JSON decode error: SN74S74N', '__class__': 'ClientErrorResponse'} 

ist ich bin nicht sicher, warum ich diesen Fehler bin immer. Aber ich denke, das könnte daran liegen, dass meine Parameter nicht richtig eingestellt sind. Können Anfragen dasselbe tun wie in der Dokumentation? https://octopart.com/api/docs/v3/rest-api#endpoints-parts-match

Sorry das ist vage, ich habe gerade angefangen, Python und Apis zu lernen. Wird zur Verfügung stehen, um weitere Fragen zu klären.

+0

Gemäß der Dokumentation https://octopart.com/api/docs/v3/rest-api#endpoints-parts-match, wird der Wert von 'Abfragen =' sollte keine einfache Zeichenfolge sein wie 'SN74S74N'. –

+0

So ein kurzer Blick auf die Octopart-API-Dokumentation lässt es so aussehen, als wäre es ein Fehler, den ihre API zurücksendet, indem sie sagt, dass Ihr 'queries'-Wert nicht in dem erwarteten Format ist. Requests tut, was es tun sollte, aber Sie müssen an der Formatierung der Abfrage arbeiten. –

+0

Die Dokumentation (https://octopart.com/api/docs/v3/overview) scheint darauf hinzudeuten, dass der Parameter "queries" eine Liste von Wörterbüchern und keine Zeichenfolge sein sollte. Wie im Python-Beispiel: 'queries = [ {'mpn': 'SN74S74N', 'referenz': 'line1'}, {'sku': '67K1122', 'referenz': 'line2'}, { 'mpn_or_sku': 'SN74S74N', 'Referenz': 'line3'}, { 'Marke': 'Texas Instruments', 'MPN': 'SN74S74N', 'Referenz': 'line4'} ] ' –

Antwort

1

Wenn Sie sich die Dokumentation ansehen, die Sie für die API bereitgestellt haben, sieht es so aus, als wären Ihre Parameter nicht so strukturiert, wie es die API erfordert.

Unter dem Beispielabschnitt, den queries mit dem Antrag als gesendet zeigt:

queries = [ 
    {'mpn': 'SN74S74N', 
    'reference': 'line1'}, 
    {'sku': '67K1122', 
    'reference': 'line2'} 
] 

für Ihr Beispiel So benötigen Sie:

queries = [ 
    {'mpn': 'SN74S74N', 
    'reference': reference goes here} 
] 

und die Anfrage verwenden, wie Sie in Ihrem Code haben .

link to the docs