Отправить запрос на публикацию с python в laravel

#python #laravel #post #request

Вопрос:

Мне нужно отправить словарь с запросом POST, созданный на Python, на веб-страницы, созданные в Laravel. Я видел в Интернете, что мне нужно импортировать библиотеку запросов, но я не понимаю, как это работает.

Мой скрипт на python таков:

  mac_dict = {}

def readFile():
    with open("/home/pi/Desktop/Progetti SIoTD/device.txt", "r") as file:
        for i in file:
            line, *lines = i.split()
            if line in mac_dict:
                mac_dict[line]  = lines
            else:
                mac_dict[line] = lines
    print(mac_dict)
    print("n")
    return mac_dict

'''
def get_all_values(nested_dictionary):
    for key, value in nested_dictionary.items():
        if type(value) is dict:
            get_all_values(value)
        else:
            print(key, ":", value)
    print("n")
'''
def getValues(dict, mac):
    s = 0
    rssi_val = []
    for key in dict:
        if key == mac:
            k = dict.get(mac)
            for i in range(len(k)):
                if i % 2 == 0:
                    rssi = k[i]
                    rssi = int(rssi)
                    print(rssi)
                    rssi_val.append(rssi)
                else:
                    k_v = k[i]
                    print(k_v)

    for i in range(len(rssi_val)):
        s  = rssi_val[i]

    average = s / len(rssi_val)
    return average

readFile()
#get_all_values(mac_dict)
getValues(mac_dict, 'C4:A5:DF:24:05:7E')
 

Как я могу это сделать?
Заранее спасибо

Обновить

Мне нужно отправить словарь, который я прочитал из файла (функция ReadFile)…этот файл представляет собой TXT-файл, содержащий MAC-адрес, RSSI и строку со временем; также файл находится в Raspberry Pi4 модели B, которую я использую для сканирования сигнала Bluetooth и создания TXT-файла

Комментарии:

1. requests.post(url, data={..dictionary...})

2. у вас есть пропущенные имена переменных — это должно быть скорее for line in file:

3. неясно, какие данные вы хотите отправить. Вы показываете, как вы читаете некоторые данные из файла, но лучше покажите пример данных, которые вы хотите опубликовать на сервере.

Ответ №1:

Если у вас есть веб-сайты, написанные на 2 разных языках, наиболее надежным методом установления связи между ними является метод API. Вы можете принять запрос на публикацию, введя api в системе, написанной на Laravel. Затем вы можете легко отправить текст или файл с помощью python в этом почтовом запросе по адресу laravel api url.

Ответ №2:

отправить API и в Laravel использовать

 `public function __construct(){
 $data = "//API Here//";
 $this->data = $data;
}`

`public function store(){
      // rest of the code here you can find any where
 }
  `
 

Ответ №3:

Вы не объяснили, какие данные вы хотите отправить, поэтому я могу показать только базовый синтаксис.

 import requests

url = 'https://...'

my_dict = {...}

response = requests.post(url, data=my_dict)

print(response.text)
 

Но все может зависеть от деталей, которые вы не показали в вопросе.


Минимальный рабочий код, который использует портал httpbin.org для тестирования. Он отправляет обратно все заголовки с ПОСТА

 import requests

url = 'https://httpbin.org/post'

my_dict = {'message': 'hello world'}

response = requests.post(url, data=my_dict)

print(response.text)
 

Результат:

 {
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "message": "hello world"
  }, 
  "headers": {
    "Accept": "*/*", 
    "Accept-Encoding": "gzip, deflate, br", 
    "Content-Length": "19", 
    "Content-Type": "application/x-www-form-urlencoded", 
    "Host": "httpbin.org", 
    "User-Agent": "python-requests/2.26.0", 
    "X-Amzn-Trace-Id": "Root=1-6176a644-76c6320f5f4ae9b05a118b2f"
  }, 
  "json": null, 
  "origin": "79.163.228.53", 
  "url": "https://httpbin.org/post"
}
 

Он показывает "form": {"message": "hello world"} , что я отправляю на сервер.