Hi!
Hmmm, ich bin immernoch für Python.
JSON:
Der Datentyp dict
ist JSON sehr ähnlich:
# Elemente hardcoded angeben:
myDict={"FirstName": "John",
"LastName":"Doe",
"Age":27,
"IsAlive":True,
"PhoneNumbers": [
{"type": "home","number": "212 555-1234"},
{"type": "office","number": "646 555-4567"}
]
}
#Elemente programmatisch hinzufügen:
myDict["Spouse"]=None
#Elemente lesen:
print("Last year, %s %s was %d years old"%(myDict["FirstName"],
myDict["LastName"],
myDict["Age"]-1))
print("His numbers:")
for i in myDict["PhoneNumbers"]:
print(i["number"])
#Ausgabe:
#Last year, John Doe was 26 years old
#His numbers:
#212 555-1234
#646 555-4567
und lässt sich fix nach JSON konvertieren:
import json
#myDict=...Wie oben...
myJsonString=json.dumps(myDict)
print(myJsonString)
#Ausgabe:
#{"FirstName": "John", "LastName": "Doe", "Age": 27, "IsAlive": true, "PhoneNumbers": [{"type": "home", "number": "212 555-1234"}, {"type": "office", "number": "646 555-4567"}], "Spouse": null}
Zurückkonvertieren:
myDictFromJson=json.loads(myJsonString)
print("Today, %s is %d years old"%(myDictFromJson["FirstName"], myDictFromJson["Age"]))
#Ausgabe:
#Today, John is 27 years old
REST
Im Prinzip ist das Http(s), das mit den Methoden GET, POST, DELETE, … arbeitet.
Der folgende Code ruft ne URL mit Parametern auf, erledigt ne einfache Authentifizierung, schickt nen Header und platziert Daten per PUT
. (Testen konnte ich das aber nicht)
topLevelUrl = "https://www.example.de"
headers={
'User-Agent':'Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0',
'Accept-Language': 'de,en-US;q=0.7,en;q=0.3',
'Accept-Encoding':'gzip, deflate, br',
'DNT':'1'}
URLparameters={"Name": "Strauß&Söhne", "Status": "Veräußert/verkauft"}
# Authentifizerung
pwManager = urllib.request.HTTPBasicAuthHandler()
pwManager.add_password(realm=None, uri=topLevelUrl, user="JohnDoe", passwd="test123456")
opener = urllib.request.build_opener(pwManager)
urllib.request.install_opener(opener)
# URL mit Parametern basteln
url=topLevelUrl + "/cgi/?"+ urllib.parse.urlencode(URLparameters)
print (url)
#Ausgabe:
#https://www.example.de/cgi/?Name=Strau%C3%9F%26S%C3%B6hne&Status=Ver%C3%A4u%C3%9Fert%2Fverkauft
# url öffnen, und PUT absetzen
request=urllib.request.Request(url, data=myJsonString, headers=headers, method='PUT')
f=urllib.request.urlopen(request)
print(f.getheaders())
print(f.read()) # body
print(f.status()) # status code vom Server