Довольно новичок в Pharo/Seaside, и прошло много времени с тех пор, как я использовал Smalltalk. Я пытаюсь создать службу RESTful и не могу заставить ее работать с помощью прагм так, как я думаю. Т.е. вот мой метод списка внутри класса TeamMembers, который является прямым подклассом WARestfulHandler.
list
<get>
^ String streamContents: [ :stream |
self teamMembers do: [ :each |
stream nextPutAll: each ; crlf ] ]
После выполнения всей необходимой регистрации WAAdmin регистрирует: TeamMembers по адресу: 'team-members', когда я запускаю в браузере (http://localhost:8080/team-members) Я получил сообщение
/team-members не найден
, но если я выполню (http://localhost:8080/team-members/list), он работает так, как ожидалось.
Кажется, это противоречит документации на http://book.seaside.st/book/advanced/restful/getting-started/define-handler.
Если я переопределю TeamMembers>>
createRoutes
| route |
route := WARoute get: '/listJson' selector: #listJson.
^OrderedCollection new
"GET"
add: route;
add: (WARoute get: #list);
yourself
Затем я получаю ожидаемое поведение при переходе по адресу (http://localhost:8080/team-members). )
Однако, чтобы получить вывод Json, мне все еще нужно использовать (http://localhost:8080/team-members/listJson).
Я, вероятно, пропустил что-то довольно простое, но любая помощь приветствуется.
Использование Pharo6.0-64.image с Seaside, вот как было установлено seaside.
Metacello new
configuration:'Seaside3';
repository:
'http://www.smalltalkhub.com/mc/Seaside/MetacelloConfigurations/main';
version: #stable;
load.
Gofer new
squeaksource: 'Seaside30Addons';
package: 'Seaside-REST-Core';
package: 'Seaside-Pharo-REST-Core';
package: 'Seaside-Tests-REST-Core';
load.
Спасибо