2017-02-21 4 views
1

У меня есть веб-приложение, для которого мы добавляем API сейчас.Рефакторинг кода веб-приложения при добавлении API позже

Я ищу лучшие практики, которые следует учитывать при работе над этим.

Я рассматриваю эти факторы:

  • DRY: Избегайте избыточности (по мере возможности). Возьмем, к примеру, часть кода, обрабатывающего подачу формы. Есть некоторые части, которые применимы только для отправки веб-формы, но не имеют отношения к эквивалентному вызову API Post. Я думаю о модуляции общего кода для этих обработчиков Post. Я должен добавить, что классы обработчиков для Web Form и API различны. Я создаю третий класс, который будет иметь общие методы. Этот третий класс будет унаследован двумя классами обработчиков (вместе с другими базовыми классами, множественным наследованием).

  • Должен ли я реорганизовать код таким образом, чтобы метод обработчика веб-формы «Post», в свою очередь, вызывал метод Post Post?

Спасибо.

ответ

0

Я думаю, что особенности этого будут существенно различаться в каждом конкретном случае, но я сделал что-то подобное недавно, и я поделюсь тем, что я придумал.

Это, как я организовал свои обработчики, так что я не повторяюсь:

class MyHandler(webapp2.RequestHandler) 
    class ApiHandler(MyHandler): 
     class Ajax(ApiHandler): # Ajax calls on my website 
     class V0(ApiHandler): # V0 of my REST API for third parties 
    class WebHandler(MyHandler): 
     class HomePage(WebHandler): 
     class OtherPage(WebHandler): 

Я добавил много вспомогательных методов, которые могут быть использованы подклассами. Например, MyHandler имеет метод write_json, потому что он используется во многих местах, а ApiHandler имеет метод process_json, потому что он используется только API.

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

+0

Thanks Jeff. Вы используете webapp2 для обработчиков API? Разве вы не использовали конечные точки? – user362953

+0

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

Смежные вопросы