С vueJS отправляю запросы на сервер, но везде по-разному принимаются параметры.
Принимаю такие методы: GET, POST, PUT, PATCH, DELETE.
Поясню.
Как у меня сейчас:
GET
на VUE:
let data = {params:{abc: 'cde'}};
this.$http.get('http://example.com/',data)
получается строка вида:
example.com/?abc=cde
Его на пхп получаю как через $_GET, так и через $_REQUEST
едем дальше
POST тут становится интереснее
На вью есть 2 варианта:
1)
let data = {abc: 'cde'};
this.$http.post('http://example.com/',data)
тогда на сервере принимаю через
file_get_contents('php://input') и просто прогоняю через json_decode()
2 вариант
let data = new FormData;
data.append('abc', 'cde');
this.$http.post('http://example.com/',data)
в таком случае на пхп можно принять через $_POST и через $_REQUEST
идем развлекаться дальше
PUTlet data = {abc: 'cde'};
this.$http.put('http://example.com/',data)
по сути то же самое что и гет, но принять на сервере можно ТОЛЬКО через file_get_contents('php://input')
PATCH в принципе как и
PUT, ну и
DELETE, но в нем указывать нужно во вью параметры через body:
let data = {body: { abc: 'cde' }};
В общем, происходит полная путаница...
Хотелось бы как то все в одну переменную $_REQUEST зафигачить
Я подумал над такой схемой:
switch ($_SERVER['REQUEST_METHOD']){
case 'GET':
$_REQUEST = $_GET;
break;
case 'POST':
if (is_null($_POST))
$_REQUEST = json_decode(file_get_contents('php://input'));
else
$_REQUEST = $_POST;
break;
case 'PUT':
case 'DELETE':
case 'PATCH':
$_REQUEST = json_decode(file_get_contents('php://input'));
break;
}
Но мне кажется это как то не правильно, что можете посоветовать?