Фасад над API запросами. Как собрать объекты, их информацию и упаковать в один запрос? Имеется API обертка над запросами. Они построены так, что в одном http запросе можно внутри послать еще пачку на выборку, изменение, создание данных и т.п.
Хотел сделать статический фасад, на подобие:Users::find($user_id);
Users::create(['name' => 'foobar']);
$s = new Service($id);
$s->field = 'FooBar';
$s->update();
Reference::findByType(Type::ORGS);
Где каждая строка по-сути это запрос на удаленный сервер. Интересует как в этих объектах собрать общие параметры запроса и послать одим в последнем методе?
Какие паттерны под это дело существуют? Фабрика и наблюдатель, мне кажется не подходят. Да и городить монструозное ООП не хочется, а сделать легкий фасад, как в Laravel например.

21 Авг 2019 в 07:08
212 +1
0
Ответы
1

Для реализации фасада над API запросами можно воспользоваться паттерном "Строитель" (Builder). Этот паттерн позволяет поэтапно собирать сложные объекты с определенными параметрами и в конечном итоге получить готовый объект для отправки запроса.

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

Пример реализации может выглядеть примерно так:

class ApiRequestBuilder {
private $method;
private $url;
private $data;
private $headers;
public function setMethod($method) {
$this->method = $method;
return $this;
}
public function setUrl($url) {
$this->url = $url;
return $this;
}
public function setData($data) {
$this->data = $data;
return $this;
}
public function setHeaders($headers) {
$this->headers = $headers;
return $this;
}
public function send() {
// делаем запрос на удаленный сервер с установленными параметрами
}
}
// Использование
$request = new ApiRequestBuilder();
$request->setMethod('POST')
->setUrl('http://example.com/api/users')
->setData(['name' => 'foobar'])
->setHeaders(['Authorization' => 'Bearer token'])
->send();

Таким образом, вы можете легко и гибко собирать объекты запроса с помощью класса-строителя и отправлять их на удаленный сервер. Это позволит вам держать код ваших запросов чистым и организованным, а также легко расширять функциональность фасада при необходимости.

20 Апр в 13:07
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 795 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир