Задать вопрос
@Artem0071
Безработный mr. Junior

Как обработать данные с JS?

С 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

идем развлекаться дальше
PUT
let 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;
}


Но мне кажется это как то не правильно, что можете посоветовать?
  • Вопрос задан
  • 310 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
Stalker_RED
@Stalker_RED
Могу посоветовать взять готовый или написать свой класс обработки запросов. Такой, чтоб не фигачил всё в глобальные переменные, если вы понимаете о чем я.
Вот типа как здесь https://stackoverflow.com/a/5932067 , он хоть и совсем простенький, но уже не трогает многострадальный $_REQUEST.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы