简体   繁体   中英

How to create a function in python equivalent to this curl call?

I'm facing an issue with the code below:

!curl -X POST \
      -H 'Content-Type':'application/json' \
      -d '{"data":[[4]]}' \
      http://0.0.0.0/score

How can I convert this code into a Python function or using Postman?

import requests

payload = {
    "data": [[4]]
}

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

server_url = 'http://0.0.0.0/score'

requests.post(server_url, json = payload, headers = headers)

should be roughly equivalent to your curl command.

Otherwise, to "translate" curl into Python commands you could use tools like https://curl.trillworks.com/#python .

Postman has a convenient "import" tool to import curl commands like yours (pasting your command as raw text).
The result can also be "exported" into Python code using Postman.

Shortest equivalent (with requests lib) will look like this:

import requests  # pip install requests
r = requests.post("http://0.0.0.0/score", json={"data":[[4]]})

requests will automatically set appropriate Content-Type header for this request.


Note that there will still be some differences in request headers because curl and requests always set their own set of headers implicitly.

Your curl command will send this set of headers:

"Accept": "*/*",
"Content-Length": "8",  # not the actual content length
"Content-Type": "application/json",
"Host": "httpbin.org",  # for testing purposes
"User-Agent": "curl/7.47.0"

And requests headers will look like that:

"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.22.0",
"Content-Length": "8",
"Accept": "*/*",
"Content-Type": "application/json"

So you can manually specify User-Agent header in headers= keyword argument if needed.
But compression will still be used.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM