Соглашение REST для ресурсов с косой чертой - PullRequest
2 голосов
/ 27 октября 2010

Существует ли какое-либо соглашение REST для обработки ресурсов с косой чертой?

Например, допустим, обычный ресурс REST работает так:

  • /ice cream/chocolate - возвращает ингредиенты шоколадного мороженого
  • /ice cream/rocky road - возвращает ингредиенты мороженого Роки-роуд
  • /ice cream/strawberry/banana - возвращает банан Ингредиенты

Только /ice cream/strawbery/banana не совсем работает, потому что это похоже на ресурс для клубники с подкомпонентом банана ... не совсем то, к чему мы стремимся.

Когда вы пытаетесь выйти из '/' с помощью '%2F', многие веб-серверы (включая glassfish и apache) по умолчанию блокируют это как возможное нарушение безопасности. Существуют переопределения сервера, но тогда мне нужно привлечь другую команду ... Я бы лучше сам справился с этим.

Так что же делать с умом RESTful? Я не могу очень хорошо помешать кому-то назвать свое мороженое «клубника / банан».

Я думал об использовании некоторой пользовательской escape-последовательности, такой как stawberry*slash*banana, и затем заставлял любой компонент дисплея выполнять преобразование на своем конце, но я думал, что другие, должно быть, сталкивались с подобными проблемами, так почему бы не спросить передовую практику по крайней мере, для некоторых идей, которые имеют смысл)?

Ответы [ 2 ]

2 голосов
/ 28 октября 2010

Посмотрите, что переполнение стека делает с их вопросами.Они добавляют дефис вместо пробела.Вы можете сделать то же самое, заменив косую черту дефисом.Таким образом вы сохраняете удобочитаемость вашего URI, но избегаете зарезервированных символов.

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

0 голосов
/ 28 октября 2010

если вы настраиваете URI, вы можете решить, как кодировать URI.Чтобы быть действительно ОТЛИЧНЫМ, URI на самом деле не должен иметь смысла./ XYZ / 12345 может быть шоколадным, в то время как / ABC / zzzzz - каменистая дорога.Все зависит от тебя.Вы решили придать своему URI какое-то значение, и теперь столкнулись с этой проблемой, имея косые черты в URI, но это не имеет ничего общего с REST, но с вашим собственным соглашением о кодировке URI.На самом деле REST предпочел бы, чтобы вы перечисляли свои ресурсы с некоторой базовой отправной точки, а затем пользователи переходили с использованием предоставленных вами URI.Вы можете предоставить список (в каком-то другом формате) как:

Chocolate Ice Cream http://base.com/XYZ/12345
Rocky Road Ice Cream http://base.com/ABC/zzzzz
Strawberry/Banana Ice Cream http://base2.com/G789

, и пользователи перейдут оттуда.

...