Difference between revisions of "Python:REST"

From wiki
Jump to navigation Jump to search
(Created page with "REST, REpresentational State Transfer * Transports JSON-formatted data over HTTP * Stateless as the server does not hold client context (history). Pre: simple, Con: sometimes...")
 
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
[[Category:Python]]
 
REST, REpresentational State Transfer
 
REST, REpresentational State Transfer
* Transports JSON-formatted data over HTTP
+
* Transports [[Python:JSON|JSON]]-formatted data over HTTP
 
* Stateless as the server does not hold client context (history). Pre: simple, Con: sometimes more requests needed.
 
* Stateless as the server does not hold client context (history). Pre: simple, Con: sometimes more requests needed.
 +
 +
Example code, fetching data, session state (login information) is kept by the client.
 +
 +
<syntaxhighlight lang=python>
 +
#!/usr/bin/env python
 +
 +
import requests
 +
import json
 +
import sys
 +
import urllib3
 +
 +
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
 +
 +
rest_host = "<servername>"
 +
rest_url = "https://"+rest_host
 +
command_url = "<filepath>"
 +
 +
post_headers = '{"Content-Type":"application/json"}'
 +
 +
def main():
 +
    rest_session = requests.Session()
 +
    response = rest_session.post(rest_url+"/login",
 +
                                data={"USERNAME":<user>,"PASSWORD":<password>},
 +
                                verify=False)
 +
    print ("login status: "+str(response.status_code))
 +
 +
    response = rest_session.post(rest_url+command_url,verify=False,stream=True,headers=post_headers)
 +
    print ("Command status: "+str(response.status_code))
 +
    if response.status_code == 200:
 +
        print(session.content)
 +
    response = rest_session.post(rest_url+"/logout", verify=False)
 +
    return()
 +
 +
main()
 +
</syntaxhighlight>

Latest revision as of 19:38, 25 October 2022

REST, REpresentational State Transfer

  • Transports JSON-formatted data over HTTP
  • Stateless as the server does not hold client context (history). Pre: simple, Con: sometimes more requests needed.

Example code, fetching data, session state (login information) is kept by the client.

#!/usr/bin/env python

import requests
import json
import sys
import urllib3

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

rest_host = "<servername>"
rest_url = "https://"+rest_host
command_url = "<filepath>"

post_headers = '{"Content-Type":"application/json"}'

def main():
    rest_session = requests.Session()
    response = rest_session.post(rest_url+"/login",
                                data={"USERNAME":<user>,"PASSWORD":<password>},
                                verify=False)
    print ("login status: "+str(response.status_code))

    response = rest_session.post(rest_url+command_url,verify=False,stream=True,headers=post_headers)
    print ("Command status: "+str(response.status_code))
    if response.status_code == 200:
        print(session.content)
    response = rest_session.post(rest_url+"/logout", verify=False)
    return()

main()