monaba icon indicating copy to clipboard operation
monaba copied to clipboard

API

Open catamphetamine opened this issue 5 years ago • 8 comments

Здравствуйте. Я просто проходил мимо. Уютный проект, а что по API? Я поискал через Ctrl + F, не нашлось. Если есть чё, то можно было бы прикрутить вот этот GUI: https://github.com/catamphetamine/chanchan

catamphetamine avatar Apr 08 '19 02:04 catamphetamine

Так, я понял, "Not under active development". Ну вообще да, пять лет уже, так долго проекты не живут. Есть какой-то lynxchan, но я его не смотрел. Он на Node.js и MongoDB, хотя чанам база данных, наверное, не нужна, и прямо в файлы писать будет быстрее (я так предполагаю). Иначе почему 2ch.hk грузится молниеносно.

catamphetamine avatar Apr 08 '19 02:04 catamphetamine

@catamphetamine апи есть в зачаточном состоянии, почти не протестировано и скорее всего будет меняться еще. Список роутов вот, там внизу самом https://github.com/ahushh/Monaba/blob/docker/monaba/config/routes

ahushh avatar Apr 08 '19 11:04 ahushh

Я в принципе и планировал в ближайшее время его доделать и сваять доку. Появление клиента для этого апи будет приятным бонусом.

ahushh avatar Apr 08 '19 11:04 ahushh

Список роутов вот, там внизу самом

Ага, вижу.

/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 до юзабельного состояния (мб летом доделаю), потом попробовать обкатать где-нибудь на дваче.

catamphetamine avatar Apr 08 '19 11:04 catamphetamine

Ага, Postgres, вижу. Ну, реляционные базы — тоже хорошо. Как плюс — они гибкие, и можно всегда добавлять какие-то фичи, которые были бы сложны в условиях просто файлов. Да и в случае роста всегда можно поднять read-only реплики. lynxchan пишут на MongoDB, но в своё время многие обожлись с этим MongoDB, так что я не особо им доверяю теперь. Хаскель — понимаю, почему он был выбран: интересно было попробовать "что-нибудь такое". Хрен где найдёте второго программиста на Хаскеле, конечно ) Но основную свою задачу — весело провести время — он наверняка выполнил.

Ладно тогда, я мб появлюсь где-нибудь летом, мб вы уже запилите какой-нибудь минимальный README со списком простейших read-only методов API (получить список досок, получить список тредов доски, получить сообщения треда — три штуки пока хватит) и примеров возвращаемых JSON объектов, а я на основе этой минимальной доки мб сваяю какой-нибудь простейший read-only адаптер для GUI.

catamphetamine avatar Apr 08 '19 12:04 catamphetamine

Почему бы не вынести API на отдельную страницу Wiki или хотя бы добавить раздел в конец README.

binakot avatar Apr 12 '19 20:04 binakot

Если будете писать README по API, можете взять для примера вот такой документ, который я писал для "двача": https://github.com/catamphetamine/captchan/blob/master/docs/2ch.hk.md

catamphetamine avatar Apr 12 '19 20:04 catamphetamine

@catamphetamine Добавил документацию для RO методов, описания там нет, но есть примеры - по ним в целом должно быть понятно. https://documenter.getpostman.com/view/5005722/SzRxVpvC?version=latest

ahushh avatar Mar 09 '20 00:03 ahushh