API Schnittstellen in Python nutzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
darkprotonium
User
Beiträge: 1
Registriert: Mittwoch 19. Juni 2019, 17:32

Hallo deutsches Python Forum,
vorweg möchte ich erwähnen das ich ein Python anfänger bin und erst seit kurzem angefangen habe mich mit Python zu beschäftigen.
Ich möchte gerne in den kommdenden Wochen und Monaten ein privates Projekt realisieren, wobei ihr mir vielleicht einige Tipps und Ansätze geben könnt.
Da ich schon viele Erklärungen und Lösungen gefunden habe, diese aber nur oft mit älteren Python Versionen kompatibel sind, möchte ich gerne als erstes erfragen ob ich denn wohl am besten die neuste Python Version oder empfohlenerweise auf eine Ältere Version für mein Projekt zurück greifen sollte?
Da Python eine universell einsetzbare objektorientierte Programmiersprache ist und ein ähnliches Projekt ebenfalls mit Python umgesetzt wurde, habe ich mich dazu entschlossen mich nun in diese für mich neue Programmiersprache einzufuchsen.

Workflow zu meinem Projekt:
Bild

Der erste Schritt auf dieser Liste wäre nun eine Anfrage des Online Status an meinen Linkcrypter durch api/list.
Dies sind die verfügbaren Schnittstellen:
api/insert
api/edit
api/list
api/content
api/status

Nutzen Ich nun diese Schnittstelle (api/list) gibt es diesen Response:
[ API-RESPONSE ]
CSV-Output ID;foldername;provider_shortcut(s);foldersize;clicks;status

Wichtig für mich ist "Foldername" & "Status". Dazu habe ich mir dann folgendes Tutorial angeschaut: https://www.youtube.com/watch?v=pxofwuWTs7c
Da dieses komplett veraltet ist und Python urllib2 nicht mehr auf diese weise benutzt wollte ich als erstes mal erfragen wie man diese Abfrage im neuen Python realisieren kann.
Ebenfalls würde Ich mich gerne über das lesen eines CSV-Outputs in Python informieren. Da dieses Projekt ein sehr API lastiges wird sind natürlich Tipps, Tricks und tools zu diesem Thema sehr willkommen.


Beste Grüße und vielen Dank
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Mich verwirrt dieser "Workflow" mehr, als das er hilft.

Was macht der Service, der offensichtlich eine API bereitstellt, die du ansprechen möchtest? Links verschlüsseln? Was ist "website", was ist "linkcrypter" in der Box? Ein Frontend / API und der Backendservice?

Was ist "container"? Wofür die einzelnen releases, warum mal grün, mal rot eingefärbt? Warum "checken" die nun die API? Man kann sich natürlich die Mühe machen sich da rein zu denken, aber ich würde erstmal eine saubere Spezifikation machen. Eine API beschreibt man anhand ihrer Ressourcen, vernünftigerweise spricht man dieser Tage "REST". Da stellt man sich so fragen wie:

- Welche Ressourcen stehen mir zur Verfügung
- Wie kann ich mit diesen Ressourcen arbeiten (GET, POST, PUT, HEAD, DELETE usw.)
- Welche Status sind zu erwarten? (400, 403, 404, 409, 200, 201 usw. usf)
- Welches Datenformat erwarte ich?

Welchen Code hast du bisher geschrieben? Verwende das requests Modul, urllib2 ist Asbach. Verwende außerdem min. Python >= 3.6.
When we say computer, we mean the electronic computer.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@darkprotonium: Für neuere Projekte sollte man kein Python 2 mehr verwenden wenn es dafür keinen sehr guten Grund gibt, weil Python 2 Ende dieses Jahres am Ende seines Lebenszyklus ist: https://pythonclock.org/

Was einen bei Python 3 in der Version einschränken kann ist eventuell die Verfügbarkeit von Bibliotheken. Das ist bei vielen Bibliotheken kein Problem weil innerhalb von Major-Versionen auf Rückwärtskompatibilität wert gelegt wird. Allerdings müssen Module die in C geschrieben sind, für Minor-Versionen übersetzt werden, so das gleich nach dem Erscheinen von einer neuen 3.x-Version manchmal noch nicht alle Pakete vorkompiliert im Python-Package-Index vorliegen. Unter Linux in der Regel kein grosses Problem, weil es da nicht so ungewöhnlich ist, das man auch mal eine C-Bibliothek übersetzt um sie zu installieren, aber unter Windows ist es schmerzloser wenn man Binärpakete installieren kann. Da kann es Sinn machen immer mit der vorletzten Python-Version zu arbeiten, also im Moment ist das noch die 3.6.

Bei Linux kann es zudem eine Einschränkung der Python-Version durch die Version die von der Distribution angeboten wird geben. Auf vielen noch unterstützten Debian-Installationen ist momentan Python 3.5 das neueste was man ohne Fremdpaketquelle oder selber übersetzen installieren kann.

Python ist objektorientiert — dabei sollte man aber nicht vergessen das OOP nicht bedeutet das man alles in Klassen quetschen muss, denn das heisst ja objektorientiert und nicht klassenorientiert. Und in Python ist alles ein Objekt, also ein Wert, was man an einen Namen binden kann. Also unter anderem auch Funktionen, Klassen selbst, gebundene Methoden, und Module. All diese Sachen kann man folglich wie andere Werte auch an Namen binden, in Datenstrukturen stecken, als Argumente übergeben, …

Ich nehme an diese API mit CSV-Antworten gibt es schon und die ist nicht Teil Deines Projekts? Also ausser das Du die verwenden/ansprechen willst, meine ich‽ Ansonsten würde ich da schon mal laut STOP rufen und nicht so eine schräge API entwerfen. :-) Eine REST-API mit JSON wäre Stand der Technik.

Ansonsten gibt es in der Standardbibliothek ein `csv`-Modul.

`urllib` und `urllib2` von Python 2 wurden in Python 3 unter `urllib` neu organisiert. Was man so HTTP-Abfragen braucht steht im `urllib.request`-Modul. Und in dessen Dokumentation wird ziemlich am Anfang auf das externe `requests` verwiesen was a) eine API auf höherer Ebene bietet und b) auch für Python 2 schon mit dieser API zur Verfügung steht.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten