Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2021 15:59:05

code22
Зарегистрирован: 2021-08-05
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Прием json post запроса на скрипт Python на сервере Apache как реализовать?

На вебсервере Apache запускаю .py скрипты через ExecCGI.



хочу послать на свой скрипт json массив например:


curl \

–request POST \

–header “Content-Type: application/json” \

–header “X-Marvin-Status: depressed” \

–data ‘{“name”: “Deep Thought”, “answer”: 42}’ \

https://test.com/1.py


Вопрос, как мне получить данные из –data в моем скрипте???????


пробовал cgi.FieldStorage() но это работает только с обычными полями post формы..


подскажите пжл!


Офлайн

#2 Авг. 6, 2021 01:41:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9874
Репутация: +  854  -
Профиль   Отправить e-mail  

Прием json post запроса на скрипт Python на сервере Apache как реализовать?

Просто тестовый скрипт напиши, положи его на сервере и пусть он выводит всё из stdin.

#!/usr/bin/env python3

import sys

print('Content-type: text/html')
print()

print(sys.stdin.read())

Пример:

Настройки скрипта
[guest@localhost cgi-bin]$ pwd
/var/www/cgi-bin
[guest@localhost cgi-bin]$
[guest@localhost cgi-bin]$ ll
итого 4
-rwxr--r--. 1 apache apache 102 авг 6 09:46 t.py
[guest@localhost cgi-bin]$
[guest@localhost cgi-bin]$ cat t.py
#!/usr/bin/env python3

import sys

print('Content-type: text/html')
print()

print(sys.stdin.read())
[guest@localhost cgi-bin]$

Включение сервера
[guest@localhost ~]$ sudo systemctl start httpd.service
[guest@localhost ~]$

Запрос
[guest@localhost cgi-bin]$ curl -X POST --data '{"name": "n", "value": 1}' http://localhost:80/cgi-bin/t.py
{"name": "n", "value": 1}
[guest@localhost cgi-bin]$

Выключение сервера
[guest@localhost ~]$ sudo systemctl stop httpd.service
[guest@localhost ~]$


tags: http apache



Отредактировано py.user.next (Авг. 6, 2021 01:54:04)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version