Преобразование значений POST для соответствия другому соглашению - PullRequest
0 голосов
/ 28 июня 2011

Заголовок немного запутанный, извините.

Я собираю на своем веб-сайте кучу данных, которые в конечном итоге отправлю на API другого веб-сайта через cURL. Я могу заставить все работать с технической стороны, но самая большая проблема у меня связана с семантикой.

Я вообще не фанат соглашений об именах, которые другие веб-сайты используют для своих POST значений [и, по-видимому, для своей структуры БД.]

Мой сайт

book-title => Book of Thieves
bind-type => wire //enum value
shipping-address-1 => 123 Chesterfield Road
shipping-address-2 => Apt. 204

Удаленный сайт

Title => Book of Thieves
BindType => wire-bind //enum value
Shipping1 => 123 Chesterfield Road 
Shipping2 => Apt. 204

Мой вопрос таков: как лучше всего использовать мою собственную предпочитаемую структуру данных для внутреннего использования, но когда приходит время POST передать ее в API удаленного сайта, преобразовать данные в принятые ими соглашения? Это включает в себя не только ключи, но и значения (некоторые значения предопределены и не вводятся пользователем).

Спасибо!

1 Ответ

1 голос
/ 08 июля 2011

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

Таким образом, вы можете создать класс ItsBook, который обернет YourBook и вернет методы в той форме, которая требуется их сайту.

Или вы можете создать класс PostToTheirSite, который принимает YourBook, но напрямую генерирует запрос POST, используя их семантику.

В любом случае вы генерируете один выделенный фрагмент кода, который отвечает только за семантический перевод, а не любую другую форму бизнес-логики.

...