2013-06-19 3 views
1

У меня есть службы ServiceStack, которые хорошо работают и соответствуют атрибутам Route; однако атрибуты Route не работают в тандеме с «автоматической маршрутизацией».Как включить формат в маршрутах с ServiceStack в тандеме с настраиваемыми маршрутами?

Я хотел бы определить маршруты (например:/things/{id}), а также иметь возможность форматирования в URL-адресе. Добавление формата в качестве параметра в настоящее время работает.

[Route("/things")] 
[Route("/things/{id}")] 
public class Things 
{ 
    public string id { get; set; } 
} 

/api/things 
/api/things/{1} (return default format) 
/api/json/things 
/api/json/things/{1} 
/api/xml/things 
/api/xml/things/{1} 

Согласно вики-странице ServiceStack, формат в URL должен «просто работать». Любые предложения о том, как включить его в конфигурацию apphost?

ответ

0

См. Страницу wiki на странице Routing для получения документации о том, как работает маршрутизация, например. если вы хотите использовать заранее определенные маршруты правильные адреса будут:

/api/json/reply/Things 
/api/json/reply/things?Id=1 
/api/xml/reply/Things 
/api/xml/reply/things?Id=1 

Примечание: предопределенные только использует имя запроса DTO, т.е. он не использует все свои собственные маршруты ,

Вики-объявления Content Negotiation section on Routing содержат различные способы запроса различных типов контента. В ServiceStack (v3.9.54 +) теперь вы можете использовать формат .ext например:

/api/things.json 
/api/things/1.json 
/api/things.xml 
/api/things/1.xml 

который является альтернативой к использованию FORMAT = ВНЕШНЕЕ параметр:

/api/things?format=json 
/api/things/1?format=json 
/api/things?format=xml 
/api/things/1?format=xml 
+0

Отлично, благодаря! Я пропустил второй раздел раздела «Обсуждение контента» вики, который показывает, что поддерживается .ext (аналогично mvc). 2 небольших последующих вопроса, если я могу: (1) как перемещать позицию ext (т.е.: /api.ext/). а не разрывом сделки, но возможно в маршрутизации mvc. (2) некоторые идентификаторы являются строками, а иногда и точкой (bob.dole). Отправка bob.dole.json работала как шарм. Как? – sirthomas

+0

1) Он работает только в конце pathInfo, а не в середине. 2) Он смотрит только на расширение конца и будет иметь эффект только в том случае, если расширение является встроенным или зарегистрированным пользователем Content-Type. – mythz

+0

Благодарим вас за быстрое последующее наблюдение. – sirthomas

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