Я бы порекомендовал небольшое изменение / уточнение к предложению @ RedFilter
/things/list -- HTML
/things/_list -- return HTML help and examples (more for you than them).
/things/_list/schema -- schema info
/things/_list/json -- JSON format
/things/_list/xml -- XML format
/things/_list/csv -- csv format
/things/_list/tab -- tab deliminated format
/things/_list/wdsl -- implemented soap web service
и т. Д. Я чувствую, что это более расширяемо. Это выглядит страшно, но легко передать содержимое данных через декоратор на основе запрошенного формата, делая целый ряд файловых форматов доступным практически с помощью всего нескольких строк кода.
Вот грубый концептуальный пример:
public ActionResult _list(string id)
{
string data = "";
DataTable oDataTable = this.oDAO.Get("list"); // pretend data retrieval
try{
if(!String.IsNullOrEmpty(id)){
data = this.oDecorator.FormatData(id,oDataTable);
this.ContentTypeChange(id); // change application handler
}else{
data = this.GetHelp("_list");
}
}catch{}
ViewData["data"] = data;
return View();
}
... справка может представлять собой список функций, технические примеры или что угодно. Конечно, вы можете начать с использования собственного JSON и добавлять больше форматов данных в ваш декоратор по мере роста требований, что приятно. Для многих моих проектов он начинается как AJAX с чистого листа json и имеет тенденцию переходить в другие форматы, которые необходимы в зависимости от популярности сайта, поэтому я нашел это достаточно надежным для использования в корпоративных условиях для небольших проектов, которые часто растут большой.