Как отправить сообщение в конечную точку: / myproject / messages / {nId} - PullRequest
0 голосов
/ 05 сентября 2018

Мне нужно отправить уведомление конечной точке (настроены веб-сокеты). Это уведомление должно быть отправлено с Python 3:

POST  /myproject/notification/{nId}

Я нашел несколько примеров, как отправлять данные Json, но мне нужно только отправить идентификатор уведомления nId

import urllib.request
import json      

data = {'ids': [1, 2, 3]}  

myurl = "localhost"
req = urllib.request.Request(myurl)
req.add_header('Content-Type', 'application/json; charset=utf-8')
jsondata = json.dumps(data)
jsondataasbytes = jsondata.encode('utf-8')
req.add_header('Content-Length', len(jsondataasbytes))
response = urllib.request.urlopen(req, jsondataasbytes)

Как я могу сделать то же самое для POST /myproject/notification/{nId}?

Я попробовал этот код, но он не удался.

data = 1

myurl = "localhost/myproject/notification/"
req = urllib.request.Request(myurl)
req.add_header('Content-Type', 'application/json; charset=utf-8')
jsondata = json.dumps(data)

Я бы предпочел использовать библиотеку requests вместо urllib.

r = requests.post("localhost/myproject/notification/", data=1)
print(r.status_code, r.reason)

Ответы [ 3 ]

0 голосов
/ 05 сентября 2018

Если вы просто хотите отправить пустой POST на этот URL, просто сделайте это. Нет необходимости указывать параметр данных, если у вас нет данных для отправки.

requests.post('http://localhost/myproject/notification/{}'.format(nId))
0 голосов
/ 05 сентября 2018

Начиная с Python 3.6, вы можете использовать f-строки для форматирования ваших строк.

 requests.post(f'http://localhost/myproject/notification/{nId}')
0 голосов
/ 05 сентября 2018

Вы пробовали это? Он просто вызывает конечную точку URL с псевдоданными.

requests.post("localhost/myproject/notification/"+str(nId), data=dummydata)
...