Magento API – ett exempel i Python

Jag har tidigare visat hur man kommer åt Magentos API med ett PHP exempel. I den här övningen ska jag göra exakt samma SOAP-exempel men i Python istället.

Vad som behövs

Börja med att få igång PHP-exemplet innan du börjar med det här Python exemplet.
Jag använder PyCharm Community edition för att redigera, köra och testa exempelkoden.

Installera SOAP

Först behöver Python kunna använda SOAP. Det finns olika SOAP bibliotek till Python, jag har valt att använda ett som heter SUDS. Så här installerar du SUDS om du använder ett Unix-system såsom MacOS eller Ubuntu.

sudo pip install SUDS

Exempel i Python 2.7

from suds.client import Client
apiUser = 'test'
apiKey = 'testtest123'
url = 'https://charzam.com/magento19/index.php/api/v2_soap?wsdl=1'
client = Client(url)
sessionId = client.service.login(apiUser, apiKey)
response = client.service.catalogProductLinkList(sessionId, 'related', '2')
print response
client.service.endSession(sessionId)

Resultatet

Om du kör exemplet ovan från PyCharm så kan du se i PyCharm console:

[(catalogProductLinkEntity){
 product_id = "1"
 type = "simple"
 set = "4"
 sku = "hulk"
 position = "0"
 }]

Och det är precis vad vi ville ha.

SOAP V2

I förra inlägget använde jag PHP och SOAP v 1.1 för att hämta datat.
Denna gången använder jag SOAP V2 för att hämta data.
Skillnaden är att SOAP v 1.1 har en generell funktion som du skickar in data i. Det fungerar bra för språk som klarar att ändra datatyp på variabler.
SOAP v2 däremot har en funktion för varje motsvarande funktion i webtjänsten. Det passar bra för språk som inte ändrar datatyp på variabler.
Se mer om skillnaderna längst ned här.

Vilken funktion ska jag kalla på?

Du kan använda:
print client
För att få ut en lista på alla funktionsnamn och vilka variabler de ska ha.
I listan kommer du att hitta:

catalogProductLinkList(xs:string sessionId, xs:string type, xs:string product, xs:string identifierType, )

Se dokumentationen här.

Det finns massor av spännande funktioner, testa till exempel:

magentoInfo = client.service.magentoInfo(sessionId)
print magentoInfo

för att få ut Magentos version och typ.
Se dokumentationen här.

EOD