Фасад над 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 например.
Для реализации фасада над 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();
Таким образом, вы можете легко и гибко собирать объекты запроса с помощью класса-строителя и отправлять их на удаленный сервер. Это позволит вам держать код ваших запросов чистым и организованным, а также легко расширять функциональность фасада при необходимости.
Для реализации фасада над 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();
Таким образом, вы можете легко и гибко собирать объекты запроса с помощью класса-строителя и отправлять их на удаленный сервер. Это позволит вам держать код ваших запросов чистым и организованным, а также легко расширять функциональность фасада при необходимости.