API
catamphetamine opened this issue · 8 comments
Здравствуйте.
Я просто проходил мимо.
Уютный проект, а что по API?
Я поискал через Ctrl + F, не нашлось.
Если есть чё, то можно было бы прикрутить вот этот GUI:
https://github.com/catamphetamine/chanchan
Так, я понял, "Not under active development".
Ну вообще да, пять лет уже, так долго проекты не живут.
Есть какой-то lynxchan, но я его не смотрел.
Он на Node.js и MongoDB, хотя чанам база данных, наверное, не нужна, и прямо в файлы писать будет быстрее (я так предполагаю).
Иначе почему 2ch.hk грузится молниеносно.
@catamphetamine апи есть в зачаточном состоянии, почти не протестировано и скорее всего будет меняться еще.
Список роутов вот, там внизу самом https://github.com/ahushh/Monaba/blob/docker/monaba/config/routes
Я в принципе и планировал в ближайшее время его доделать и сваять доку. Появление клиента для этого апи будет приятным бонусом.
Список роутов вот, там внизу самом
Ага, вижу.
/api/posts ApiPostR PUT
/api/posts/#Int ApiPostByIdR GET PATCH
/api/boards ApiListBoardsR GET
/api/boards/#Text/page/#Int ApiBoardR GET
/api/boards/#Text/threads/#Int ApiThreadR GET
/api/boards/#Text/threads/#Int/deleted ApiDeletedPosts GET
/api/feed/page/#Int ApiFeedR GET
/api/catalog/#Text ApiCatalogR GET
/api/home ApiHomeR GET
/api/captcha ApiCaptchaR GET
/api/file ApiFileR PUT
Плюс, ещё, видимо, эти:
/ajax/post/preview AjaxPostPreviewR POST
/ajax/postform/#Text AjaxGetPostFormR GET
/ajax/thread/#Text/#Int/new/#Int AjaxNewPostsR GET
/ajax/thread/#Text/#Int/last/#Int AjaxLastPostsR GET
/ajax/thread/#Text/#Int/all AjaxAllPostsR GET
/ajax/thread/#Text/#Int/deleted AjaxDeletedPostsR GET
/ajax/postbyid/#Int AjaxPostByIdR GET
/ajax/post/#Text/#Int AjaxPostR GET
/ajax/post/#Text/#Int/rawmsg AjaxPostRawMsgR GET
/ajax/feed/#Int AjaxFeedOffsetR GET
/ajax/newfeed/#Int AjaxNewFeedR GET
/ajax/hide/thread/#Text/#Int/#Int AjaxHideThreadR GET
/ajax/unhide/thread/#Text/#Int AjaxUnhideThreadR GET
/ajax/board/stats AjaxBoardStatsR GET
/ajax/board/stats/read AjaxBoardStatsReadR GET
/jsonfrommsg/#Text JsonFromMsgR GET
Я в принципе и планировал в ближайшее время его доделать и сваять доку.
@ahushh А я тут тоже, клиент допиливать планировал к лету.
Как вообще ваш движок по производительности?
Это по сути самое основное, я так полагаю, для больших досок.
Если на имиджборде сидит много человек, то нагрузка большая. Если же это небольшое сообщество, то без разницы.
Я так понял, 2ch.hk вообще просто пишет всё прямо в файлы (*.html и *.json), потому что грузится он у меня за 12 миллисекунд (что API, что страницы).
Да и расширения в путях как бы намекают.
Видимо, старый-добрый подход начала 90-ых здесь — самый оптимальный.
Появление клиента для этого апи будет приятным бонусом.
Даа, по планам сейчас допилить GUI до юзабельного состояния (мб летом доделаю), потом попробовать обкатать где-нибудь на дваче.
Ага, Postgres, вижу.
Ну, реляционные базы — тоже хорошо.
Как плюс — они гибкие, и можно всегда добавлять какие-то фичи, которые были бы сложны в условиях просто файлов.
Да и в случае роста всегда можно поднять read-only реплики.
lynxchan
пишут на MongoDB, но в своё время многие обожлись с этим MongoDB, так что я не особо им доверяю теперь.
Хаскель — понимаю, почему он был выбран: интересно было попробовать "что-нибудь такое".
Хрен где найдёте второго программиста на Хаскеле, конечно )
Но основную свою задачу — весело провести время — он наверняка выполнил.
Ладно тогда, я мб появлюсь где-нибудь летом, мб вы уже запилите какой-нибудь минимальный README со списком простейших read-only методов API (получить список досок, получить список тредов доски, получить сообщения треда — три штуки пока хватит) и примеров возвращаемых JSON объектов, а я на основе этой минимальной доки мб сваяю какой-нибудь простейший read-only адаптер для GUI.
Почему бы не вынести API на отдельную страницу Wiki или хотя бы добавить раздел в конец README.
Если будете писать README по API, можете взять для примера вот такой документ, который я писал для "двача":
https://github.com/catamphetamine/captchan/blob/master/docs/2ch.hk.md
@catamphetamine Добавил документацию для RO методов, описания там нет, но есть примеры - по ним в целом должно быть понятно.
https://documenter.getpostman.com/view/5005722/SzRxVpvC?version=latest