RESTful API w php?

RESTful API w php?
miej95
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 8 lat
  • Postów:78
0

Witam!
Jako że to teraz taki modny temat :D to postanowiłem go zgłębić i sam napisać jakieś api. Nie chce póki co robić tego w Javie (choć z obserwacji zauważyłem że najwięcej takich w niej się robi). Czy PHP jest dobrym językiem do tych celów?

Jeżeli tak to ma ktoś z was moze jakieś dobre materiały z których można by było to pojąć. Oczywiście jest google, które już prześledziłem dokładnie. Roi się tam od pseudo-tutoriali, w których każdy pseudo-bloger-coach robi to w inny sposób. Za to wideo tutoriale nagrywane są w większości przez ciapatych i nie idzie ich zrozumieć :D. Nie chciał bym nabrać złych nawyków.

spartanPAGE
  • Rejestracja:prawie 12 lat
  • Ostatnio:6 dni
0
miej95
  • Rejestracja:prawie 11 lat
  • Ostatnio:prawie 8 lat
  • Postów:78
0

@spartanPAGE dzięki stary, mam u Ciebie dług wdzięczności, zapomniałem adresu googe. Podleczyłeś kompleksy?

Nie pisałem nic o frameworku... chodzi mi bardziej o jakieś materiały, które pomogły by mi zrozumieć tą architekturę. Na google znaleźć można ich od groma, ale czy ktoś ma jakieś godne polecenia?

ittw
  • Rejestracja:około 11 lat
  • Ostatnio:ponad 9 lat
0

Na edx trwa jeszcze kurs Engineering Software as a Service w RoR, ale sama koncepcja architektury jest niezależna od języka.
Filmy ze szkolenia dostępne są na yt

cepa
  • Rejestracja:ponad 22 lata
  • Ostatnio:9 dni
3

Zajmuje sie tym tematem zawodowo na duza skale, np systemy dzialajace w obrebie calego kontynentu, przetwarzanie, transakcje itp. I tak, pehap nadaje sie do zrobienia bezstanowego(!) api, ktore jest nakladka na jakas baze itp. Czyli "robi zapytanie", przewala do jsona i wypluwa na wyjscie. To jest proste.
Natomiast pehap jest tragiczny jezeli owo api ma cokolwiek przetwarzac, zupelny brak asynchronicznosci na jakimkolwiek poziomie.

Wiec jak chcesz napisac proste api, to walcz. Osobiscie mysle, ze wiekszosc frameworkow z pehapa nie daje ci zupelnie nic jezeli chodzi o pisanie api, sa jedynie wolnym narzutem.

Jak chcesz cos w swoim api przetwarzac to duzo lepsza technologia bedzie chociazby python, w ktorym masz celery podpiete pod kolejke na amqp lub redisie, oraz flask ktory doskonale sie z tym integruje. Z innych wynalazkow to chociazby scala i akka.io.

MW
  • Rejestracja:około 10 lat
  • Ostatnio:około 10 lat
  • Postów:3
0
cepa napisał(a):

Natomiast pehap jest tragiczny jezeli owo api ma cokolwiek przetwarzac, zupelny brak asynchronicznosci na jakimkolwiek poziomie.

Przetwarzać w jakim sensie? Podasz jakiś przykład? ;)

cepa
  • Rejestracja:ponad 22 lata
  • Ostatnio:9 dni
1
mwns napisał(a):
cepa napisał(a):

Natomiast pehap jest tragiczny jezeli owo api ma cokolwiek przetwarzac, zupelny brak asynchronicznosci na jakimkolwiek poziomie.

Przetwarzać w jakim sensie? Podasz jakiś przykład? ;)

Wszelkie operacje, które powodują zapisy, przykładowo obsługa zamówień w dużym systemie, gdzie jest integracja z systemami księgowymi, płatnościami, mailingiem, supportem. Takie coś nie robi sie w czasie zycia requestu, tylko odklada na kolejke i przetwarza asynchronicznie ze wzgledu na opoznienia i kilka puntkow integracji / awarii. Samo 'api' jest wtedy jedynie routerem ktory odklada zadania do kolejki, a z tylu backend przetwarza je i skaluje sie go wzgledem architektury persisetnce. Np: uzywasz MySQL czy RDS na amazonie i wydajnosc tego jest dość niska, a moze byc znacznie wiecej transakcji w czasie niz przepustowosc.

Da sie to zrobic w pehapie, np: z rabbitmq albo gearmanem, ale jest to i tak klepanie kodu od zera. Dodatkowo masz wtedy procesy pehapa ktore dzialaja w tle i samo zarzadzanie nimi to dramat, zarzadzanie pamiecia kuleje, wykrywanie problemow jak rozlaczanie uslug, restarty itd - problem, brak poolingu - problem. W celery i bardziej zaawansowanych technologiach, takie rzeczy masz wbudowane we "framework" wiec skupiasz sie na problemie, a nie na budowaniu samego systemu kolejki.

edytowany 1x, ostatnio: dzek69
RS
  • Rejestracja:ponad 22 lata
  • Ostatnio:7 miesięcy
0
cepa napisał(a):

Da sie to zrobic w pehapie, np: z rabbitmq albo gearmanem, ale jest to i tak klepanie kodu od zera. Dodatkowo masz wtedy procesy pehapa ktore dzialaja w tle i samo zarzadzanie nimi to dramat [...]

Na razie nie spotkałem się z przypadkiem, by przetwarzając elementy z np. SQS problemem było współistnienie kilku procesów (może się kiedyś spotkam). Kolejka z zasady dba o to, by procesy nie przetwarzały tych samych informacji. Pełna zgoda co do reszty wypowiedzi.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)