REST API dla 4programmers.net?

REST API dla 4programmers.net?
Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
6

W sumie to przywołuje @msm bo to on zarzucił temat :P


Pojawił się pomysł udostępnienia API dla 4programmers.net. Zakładam ten wątek, aby można było przedyskutować pewne tematy jak:

  1. Po co?
  2. Dla kogo?
  3. Jaki zakres funkcjonalności?
  4. Tylko do odczytu czy możliwość publikowania (np. wpisów mikrobloga czy w przyszłości ofert pracy?)

Zakładam, ze @msm miał tutaj na myśli konkretnie API do forum, aby warto by było założyć, że w przyszłości takie API byłoby rozbudowane o np. dział z ofertami pracy czy mikroblogami.

Zapraszam do dyskusji. Jak coś się tutaj wykluje to zbiorę to do kupy i pozakładam zadania na github.

edytowany 1x, ostatnio: Adam Boduch
msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
6

To skoro zostałem przywołany...

Pomysł się zrodził już jakiś czas temu, bo co najmniej kilka pytań o API do 4p widziałem (nawet w kontekscia aplikacji mobilnej).

A teraz coś się ruszyło, bo pewien użytkownik (@kq konkretnie) chciał napisać 4programmers.netowego bota do IRC (bot z tego co wiem już napisany i działa btw).

W każdym razie potrzebował funkcji pobierania najnowszych tematów na forum (żeby bot robił powiadomienia), i pierwszy pomysł to było parsowanie strony głównej forum w poszukiwaniu nowych tematów.
Jako że to jest chory pomysł (parsowanie HTMLa tylko po to żeby kilka pól wyciągnąć), stanęło na prostym API do tego (ostatnie 10 tematów w JSONie).

No i to testowe API stoi już i ma się dobrze (nie jest dostępne publicznie, bo to efektywnie hack na kolanie i ten wątek jest po to żeby ustalić co dalej, ale jeśli ktoś jest zainteresowany "na już" to można napisać PW).

To skoro background za nami, to jeszcze coś konstruktywnego odpowiem na pytania:

Po co?

Programiści to zazwyczaj kreatywne istoty, jeśli dać im taką możliwość to mogą zrobić coś przydatnego.
Use casów dla api jest masa, chociażby wspomniany bot do irca (ja kiedyś napisałem jeszcze inne api, i jeszcze bardziej na kolanie, do bota XMPPowego, ale to było dawno (jeszcze na poprzednim serwerze) a tamten bot w końcu nie ruszył nigdy).

Jaki zakres funkcjonalności?

Zakładam, ze @msm miał tutaj na myśli konkretnie API do forum, aby warto by było założyć, że w przyszłości takie API byłoby rozbudowane o np. dział z ofertami pracy czy mikroblogami.

Na pewno wątki i posty na forum (jak Adam napisał), bo to na razie najbardziej aktywna częśc 4p. W przyszłości inne działy też są opcją, ale trzeba się zastanowić które - takie np. API dla ofertów pracy by było przydatne gdyby ktoś się z nim integrował/go używał. Nie mam pojęcia jak wygląda sprawa API dla ofert pracy, kto wie, może jest jakiś standard :P.

Tylko do odczytu czy możliwość publikowania (np. wpisów mikrobloga czy w przyszłości ofert pracy?)

Na pewno możliwośc publikowania by dramatycznie zwiększyła przydatność takiego API. Tylko trzeba by się zastanowić nad bezpieczeństwem tego, bo nie chcemy żeby jakiś abuser za pomocą trzylinijkowego skryptu w javascripcie puszczonego w nocy dodał 500 tysięcy postów do bazy ;).

pingwindyktator
  • Rejestracja:ponad 12 lat
  • Ostatnio:około 2 miesiące
  • Lokalizacja:Kraków
  • Postów:1055
1

user image
@msm pewnie, że działa ;D


do not code, write prose
msm
:D. Ładne.
Webowiec
Co to, czaty 4p na tekstowej przeglądarce?? :P
pingwindyktator
Ech, serio? Poza tym - kilka ficzerów jest jeszcze w przygotowaniu.
0
msm napisał(a):

Jako że to jest chory pomysł (parsowanie HTMLa tylko po to żeby kilka pól wyciągnąć), stanęło na prostym API do tego (ostatnie 10 tematów w JSONie).

Nie to żebym się czepiał, ale do tego akurat to by chyba wystarczył rss, który jak widzę tu jest. Czyli xml a nie prasowanie strony.

Co do klienta mobilnego, to może być i nawet komunikować się przez te api restowe, tylko po co wymyślać koło na nowo zamiast dodać obsłigę taptalk?

msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
0

Nie to żebym się czepiał, ale do tego akurat to by chyba wystarczył rss, który jak widzę tu jest. Czyli xml a nie prasowanie strony.

RSS sie generuje (nie wiem czemu w sumie) 500 ms, więc trzeba by go najpierw zoptymalizować. Ale racja, wystarczyłby (chociaż by był mniej wygodny), tylko mówilem o pierwszym pomyśle :P.

Odnośnie klienta mobilnego to nie twierdze żę to najlepszy sposób, tak tylko wspomniałem bo sobie przypomniałem o nim. Nie wiem w sumie co to taptalk, ale brzmi mądrze.

0

Taptalk to klient mobilny do forum. Mam wrażenie że już tu upominano się nie raz o obsługę taptalka

HO
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 3 lata
  • Postów:21
0

Miałem napisać o tym trochę później, jak już zrobię w miarę używalną wersję, ale skoro poruszyliście tu ten temat... Piszę w ramach projektu do portfolio/nauki mobilną apkę 4programmers na Androida. Obecnie więcej funkcji nie ma niż jest, ale to bardzo wczesna wersja. Korzystam z parsowania HTML i działa dość dobrze. Myślę, że REST API mogłoby się bardzo przydać. Jeśli ktoś jest zainteresowany mogę napisać mikrobloga/temat na forum gdzie dokładniej opisze apkę, dodam screeny itp. Jest ktoś taki?

Tak btw.
Nie jestem tu nowy, śledzę to forum od dłuższego czasu, a nowe konto założyłem, bo trochę wstyd mi za stare posty i tematy napisane gdy dopiero zaczynałem naukę :D.

edytowany 1x, ostatnio: Hobbajt
Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
1

@Hobbajt: pewnie, pochwal się na mikroblogu. Tylko weź pod uwagę, że po wydaniu nowej wersji 4programmers.net, zmieni się struktura kodu HTML tak więc aplikacja przestanie działać poprawnie.

HO
  • Rejestracja:około 9 lat
  • Ostatnio:ponad 3 lata
  • Postów:21
0

Z tego co przeglądałem nową wersję, to zmienić będę musiał tylko kod odpowiadający za parsowanie. Struktura strony jest podobna do obecnej, więc nie powinno być źle :). Zauważyłem też kilka zmian, które trochę ułatwią parsowanie.

flowCRANE
Moderator Delphi/Pascal
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Tuchów
  • Postów:12171
0
Hobbajt napisał(a)

Jeśli ktoś jest zainteresowany mogę napisać mikrobloga/temat na forum gdzie dokładniej opisze apkę, dodam screeny itp. Jest ktoś taki?

Zamiast pytać się czy ktoś jest zainteresowany, weź po prostu załóż wątek w tym dziale lub w http://4programmers.net/Forum/Off-topic/Oceny_i_recenzje :]


Pracuję nad własną, arcade'ową, docelowo komercyjną grą z gatunku action/adventure w stylu retro (pixel art), programując silnik i powłokę gry od zupełnych podstaw, przy użyciu Free Pascala i SDL3. Więcej informacji znajdziesz na moim mikroblogu.
HO
napisałem już mikrobloga :)
flowCRANE
Ooo, faktycznie - przegapiłem ten wpis... ;)
KA
KA
  • Rejestracja:prawie 12 lat
  • Ostatnio:prawie 5 lat
  • Lokalizacja:Warszawa
  • Postów:1683
1

jakby było rest api z wieloma funkcjonalnościami to byłoby mega. Napisałabym sobie bota. DAWAJCIE !!!


PROGRAMY NA ZAMÓWIENIE, ZALICZENIA STUDENCKIE, KONFIGURACJA SERWERÓW, SYSTEMÓW I BAZ DANYCH, STRONY INTERNETOWE, POMOC W PROGRAMOWANIU, POPRAWIENIE I OPTYMALIZACJA APLIKACJI
JAVA, C++, LINUX, WWW, SQL, PYTHON
POSIADAM KOMERCYJNE DOŚWIADCZENIE
TANIO, SZYBKO I PORZĄDNIE
Z KOMENTARZAMI OBJAŚNIAJĄCYMI KOD
PISZ NA PRYWATNĄ WIADOMOŚĆ
CENY JUŻ OD 49,99ZŁ ZA PROGRAM
ZAJMIJ SIĘ TYM CO CIĘ NAPRAWDĘ INTERESUJE!
Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
2

W takim razie można by było zachować obecną strukturę URL-i dla WWW i generować odpowiedź w JSON jeżeli odwołanie pochodziłoby do subdomeny api.4programmers.net. Czyli np.:

4programmers.net/Forum => Wersja HTML
api.4programmers.net/Forum => JSON

Podstawową trudność jaką widzę to to, że API powinno być wersjonowane. Czyli mielibyśmy adres: api.1-0.4programmers.net/Forum albo api.4programmers.net/1.0/Forum tak, aby ewentualnie zmiany nie powodowały, że nagle wywalą się aplikacje korzystające z API. No i oczywiście testy każdego kontrolera API.

bree
  • Rejestracja:około 9 lat
  • Ostatnio:około 7 lat
  • Postów:40
0

A czy takie api mogłoby być wykorzystane do napisania "powiadamiacza" dla Firefoxa/Chrome?

Zobacz pozostałe 3 komentarze
msm
@somekind mam fajniejsze kolorki (edit: hm, jednak takie same. Wrapper deusa był lepszy.)
somekind
Twoja stara miesza bigos łokciem.
msm
A jednak nie takie same (B60016 vs B22222), honor uratowany.
Wizzie
@somekind 3:33 nie służy kulinarnym perwesjom
Marooned
No to ktoś srogo pojechał z tymi różnymi barwami. Widać na pierwszy rzut oka...
drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
0

Czy wypluwane przez API JSON-owe wyniki będą zbliżone (a może też w 100% zgodne) ze specyfikacją określoną tutaj?

http://jsonapi.org/

Czy też może według własnej specyfikacji?

Prawdę mówiąc to json-api pod linkiem wyżej wygląda dość ciekawie, nawet są i biblioteki do PHP na githubie, więc co o tym sądzicie?

Idąc dalej, w jakiej postaci będą zabezpieczenia? API key dla programisty (md5, sha1), Basic Authentication, Digest Authentication czy coś innego?

Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
0
drorat1 napisał(a):

Czy wypluwane przez API JSON-owe wyniki będą zbliżone (a może też w 100% zgodne) ze specyfikacją określoną tutaj?

http://jsonapi.org/

Czy też może według własnej specyfikacji?

Właściwie to nie wiem... dla mnie wygląda ok. Jakieś opinie przeciw?

drorat1
  • Rejestracja:ponad 15 lat
  • Ostatnio:około 2 lata
  • Lokalizacja:Krasnystaw
  • Postów:1181
0

Niczego tu w zasadzie nie sugeruję. Ale dość dobrze opracowane bo np: to:

Kopiuj
GET /articles?page[number]=3&page[size]=1 HTTP/1.1

HTTP/1.1 200 OK
Content-Type: application/vnd.api+json

{
  "meta": {
    "total-pages": 13
  },
  "data": [
    {
      "type": "articles",
      "id": "3",
      "attributes": {
        "title": "JSON API paints my bikeshed!",
        "body": "The shortest article. Ever.",
        "created": "2015-05-22T14:56:29.000Z",
        "updated": "2015-05-22T14:56:28.000Z"
      }
    }
  ],
  "links": {
    "self": "http://example.com/articles?page[number]=3&page[size]=1",
    "first": "http://example.com/articles?page[number]=1&page[size]=1",
    "prev": "http://example.com/articles?page[number]=2&page[size]=1",
    "next": "http://example.com/articles?page[number]=4&page[size]=1",
    "last": "http://example.com/articles?page[number]=13&page[size]=1"
  }
}

I można sobie stronicować wyniki w JSON z użyciem linków albo pobierać i wszystkie, robiłem coś wg. tego i naprawdę fajne rozwiązanie i fajnie to działa.

No i to:

Kopiuj
HTTP/1.1 422 Unprocessable Entity
Content-Type: application/vnd.api+json

{
  "errors": [
    {
      "status": "422",
      "source": { "pointer": "/data/attributes/first-name" },
      "title":  "Invalid Attribute",
      "detail": "First name must contain at least three characters."
    }
  ]
}

Czyli w przypadku wystąpienia błędu są jasne informacje czego to dotyczy.

Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
2

Odświeżam wątek. Czyli podsumowując założenia:

panryz
Jest jakaś wersja developerska tego API?
Adam Boduch
nie, jeszcze żadne prace w związku z tym nie zostały dokonane
Marooned
Administrator
  • Rejestracja:ponad 22 lata
  • Ostatnio:34 minuty
  • Lokalizacja:Poznań
0

Nie miałem jeszcze styczności, ale "mówi się" [citation needed], że http://graphql.org/ to "następca" REST i nie ma potrzeby wersjonowania przy rozwoju. Może jest tu jakiś spec, który potwierdzi bądź zaprzeczy i ogólnie wypowie się w temacie czy warto, czy jednak zostać przy wersji klasycznej?


Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
0
Marooned napisał(a):

Nie miałem jeszcze styczności, ale "mówi się" [citation needed], że http://graphql.org/ to "następca" REST i nie ma potrzeby wersjonowania przy rozwoju. Może jest tu jakiś spec, który potwierdzi bądź zaprzeczy i ogólnie wypowie się w temacie czy warto, czy jednak zostać przy wersji klasycznej?

Podbijam temat w związku z pytaniem zadanym przez @Marooned. Robimy REST API czy GraphQL API? Jednak GraphQL to wciąż nowość, REST istnieje już od lat.

Marooned
Póki co gdziekolwiek trafiam na API, to nadal REST. Może GraphQL to bardziej promocja póki co niż realne użycie(?).
marcio
  • Rejestracja:ponad 17 lat
  • Ostatnio:28 minut
0

Czesc czy prace nad publicznym api stoja w miejscu lub jest juz cos?

Adam Boduch
Administrator
  • Rejestracja:około 23 lata
  • Ostatnio:2 dni
  • Postów:11948
1

Niestety stoją w miejscu, ale jesteśmy otwarci na pomoc w tej kwestii :))

Zobacz pozostały 1 komentarz
Adam Boduch
Tak, jest zaczęte lecz póki co tylko bardzo mały fragmencik został napisany przez @msm (kod potrzebny był do integracji czatu).
panryz
A można byłoby napisać osobną aplikację w innej technologii?
Aryman1983
Aryman1983
Też mnie to ciekawi.
Adam Boduch
Z racji tego, że cierpimy na braki kadrowe nie można za bardzo wybrzydzać ;) Aczkolwiek w PHP są już gotowe metody do wyciągania danych z bazy danych więc część kodu jest już gotowa. A jaką technologię masz na myśli?
panryz
na razie podpytuję. Domyślam się, że nowa aplikacja musiałaby mieć osobny connector do bazy, musiałaby znać jej strukturę i żyć niezależnie od tej phpowej. Problem pojawi się, kiedy coś się zmieni w bazie to trzeba będzie pamiętać o tym. że trzeba będzie to zmieniać w 2 miejscach.
msm
Administrator
  • Rejestracja:prawie 16 lat
  • Ostatnio:5 miesięcy
0

Zaczęły się dawno temu, ale z powodów technicznych stanęły i nie zanosi się żeby poszły do przodu :P. Ale jak ktoś napisze...

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.