Дизайн класса с APIRequest и Response - PullRequest
0 голосов
/ 10 марта 2009

Я разработал класс, который создает XML для POST, чтобы вызывать вызов API стороннего API. У класса есть вспомогательные методы; Один для формирования HttpWebRequest, а затем один для его отправки. У меня вопрос такой:

Должен ли ответ (который в итоге я собираюсь вставить в XMLReader и разобрать его, чтобы получить значения) должен быть возвращен как HttpWebResponse, XMLReader или как? И должен ли этот ответ быть возвращен методом Send HttpWebRequest, который я имею, или просто установить свойство в своем классе APIRequest.cs, который выполняет отправку? Или я должен передать этот HttpWebResponse или XMLReader (если я решу вместо этого сначала отправить этот ответ читателю) в совершенно другой класс APIMethodResponse, который содержит значения, которые вернулись в ответе?

Я думаю о SOLID и просто о базовом дизайне классов здесь. Я не уверен, какой путь пойти с этим с точки зрения обработки ответа, который возвращается от вызова / запроса метода API, который я делаю с моим классом APIRequest.cs.

Примечание. Класс APIRequest.cs действительно более специфичен, например UpdateCustomerRequest.cs, поскольку я вызываю, например, метод API UpdateCustomer. Таким образом, XML, который я создаю для POST, создается с помощью метода, который создает необходимые узлы и данные для отправки в качестве POST для вызова метода UdpateCustomer

Ответы [ 2 ]

1 голос
/ 10 марта 2009

Вернуть XmlReader. С XmlReader вы можете делать все что угодно - загружать в XmlDocument, использовать в качестве входных данных для XslCompiledTransform и т. Д. Это наименее распространенный знаменатель API-интерфейсов XML.

Кстати, вы когда-нибудь создавали HttpWebRequest, но не отправляли его?

1 голос
/ 10 марта 2009

Вы не должны возвращать HttpWebResponse. Это внутренняя часть вашей структуры вызовов API и не относится к вызывающей стороне.

Я бы либо оставался базовым и возвращал необработанный XML (который затем может быть проанализирован несколькими способами в зависимости от требований вызывающего), либо я бы прошел весь путь, проанализировал его и вернул параметры возвращаемого значения / выхода внутри.

Имейте в виду, что вызывающая сторона должна как можно ближе вызывать методы API и получать возвращаемые значения, не имея дело с проводкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...