Вы можете кэшировать ответ API в атрибуте экземпляра, который инициализирован как None
, так что метод свойства data
будет получать данные только из API, если атрибут кэширования равен None
:
class Thing:
def __init__(self, id):
self.id = id
self._data = None
@property
def data(self):
if self._data is None:
self._data = self._get_data_from_api()
return self._data
def _get_data_from_api(self):
return requests.get(url, headers).json()
Довольно редко можно заниматься веб-разработкой на Java без использования какой-либо инфраструктуры MVC, которая делегирует все представления JSP (кроме вывода в формате PDF и других угловых случаев), поэтому у вас есть:
Некоторые веб-фреймворки, такие как Tapestry и JSF («Java Server Faces»), являются немного больше похоже на HTML-представления с дополнительными тегами.
В конечном итоге JSP просто компилируются в сервлеты и, как правило, являются более удобной формой для вывода HTML. Вообще говоря, я бы использовал их как минимум вместо того, чтобы писать кучу операторов out.println () в сервлете напрямую.
I have successfully used Velocity for a number of years on a very small scale internal site.
Its easy to use and has a nice clean API. It handles burst of activity extremely well.
Funny, I just saw a slightly similar question before. You can also use PHP pages via Quercus for your page rendering in Java.
cletus совершенно прав в своих рекомендациях.
Freemarker (или скорость) - это решения, которые нужно использовать, если вам «просто» требуется рендеринг на основе шаблонов. Они довольно эффективны. Вы можете подняться по лестнице сложности с использованием JSP.
Я не согласен, что это конкретно ограничено паттерном MVC. В самом простом (и, очевидно, это не будет масштабироваться для больших систем) вы можете иметь один и тот же сервис сервлетов для всех запросов, выбрать шаблон скорости / свободного маркера, заполнить требуемый контекст и отобразить шаблон.