poniedziałek, 28 listopada 2011

Podstawy Node.js - wysyłanie żądań do serwerów WWW (POST)

Dwie chyba najbardziej podstawowe metody protokołu HTTP to GET i POST. Jak sugerują nazwy, pierwsza metoda służy przede wszystkim do pobierania zasobów z serwera (możliwe jest ewentualnie przekazywanie parametrów), druga - do wysyłania danych (np. z formularza) do serwera/serwisu. Szerzej metody te przedstawione zostały w zalinkowanych niżej artykułach i książce.
Metoda GET została zademonstrowana w przykładzie dołączonym do artykułu "Node.js i aplikacje CLI - smaczek przed sesją", nie wymaga więc ponownej prezentacji (mam nadzieję).
Czas w takim razie na metodę POST. Poniższy program demonstruje wykorzystanie znanego nam już obiektu ClientRequest, tworzonego przez funkcję http.request, do wysłania dwóch linijek tekstu do serwera WWW (przyda się tutaj przykład z 35. spotkania ŚRGM - kliknij, wybierz full-web-app).
Należy zauważyć, że utworzony obiekt ClientRequest jest jednocześnie strumieniem z możliwością zapisu - uzyskujemy to dzięki zadeklarowanej w opcjach połączenia (zmienna req_opts) metodzie POST. W związku z tym wysyłanie danych do serwera (we fragmentach - ang. chunks) realizowane jest poprzez funkcję write obiektu ClientRequest, przy czym każde jej wywołanie (w załączonym przykładzie) traktowane jest jak wysłanie kolejnego fragmentu danych (chunk). Zakończenie wysyłania to oczywiście wywołanie funkcji end dla obiektu ClientRequest.
Po zakończeniu transmisji serwer wyśle naszemu programowi odpowiedź (zdarzenie "response") w postaci strony WWW, przygotowanej w oparciu o przesłane wcześniej dane (no, w naszym przypadku określenie "strona WWW" to lekka przesada...).
Zachęcam do przetestowania programu i samodzielnego zgłebienia tematu.



Bibliografia:
Metoda POST
Metoda GET
Protokół HTTP
C. Wong: HTTP. Leksykon kieszonkowy - niestety, niedostępna, ale fajna książeczka.
Funkcja http.request (Node.js API)
Obiekt ClientRequest (Node.js API)

piątek, 25 listopada 2011

Po 35. spotkaniu ŚRGM i PLSSUG Katowice

Tym razem wystąpiłem w roli prelegenta, zresztą już się chwaliłem. Moja sesja poświęcona była - o czym też już pisałem - środowisku Node.js. Mimo, że tematyka nie dotyczyła bezpośrednio technologii związanych z firmą Microsoft, odniosłem wrażenie, że uczestnicy spotkania nie nudzili się (aż tak ;-)) - przeciwnie, kilku kolegów wzięło aktywny udział w dyskusji w trakcie prezentacji, za co im oczywiście bardzo dziękuję.
Nie uniknąłem też kilku niedomówień czy zaniedbań. Te pierwsze wynikały zapewne z chęci przekazania jak największej liczby informacji (więc o kilku rzeczach zapomniałem), a zaniedbania - no cóż, nie sprawdziłem np. czy są dostępne moduły do komunikacji z bazami danych Microsoft SQL Servera (a są: node-mssql). I zapewne jeszcze coś się znajdzie. Za wszelkie te nieścisłości i braki przepraszam - obiecuję nadrobić zaległości pisząc regularnie, mam nadzieję, na tym blogu o różnych aspektach tworzenia aplikacji w Node.
No i siła wyższa - podobnie, jak u Tobiasza podczas SCC - z powodu bardzo ograniczonego dostępu do internetu nie zadziałało moje najbardziej spektakularne demo (stream publicznego timelineu Twittera), musiałem prezentować na sucho... O programie napisanym specjalnie na prezentację (mocno uproszczonym odpowiedniku curl) już nie wspomnę.
Mam jednak nadzieję, że o ile nie zachęciłem, to przynajmniej zainteresowałem uczestników środowiskiem Node i możliwościami, jakie wnosi do sfery programowania stron webowych.

Obiecałem udostępnić materiały z sesji, co też z przyjemnością czynię - poniżej.

Prezentacja:

Przykłady (20kB)
Prezentacja w formacie PDF (0,5MB)

A na koniec nius, który pojawił się dzisiaj. Nowa wersja Node.js - 0.6.3 - posiada już zintegrowany menedżer pakietów npm, działający również w systemach Windows, co powoduje, że Node.js staje się jeszcze bardziej użyteczny w przypadku tej platformy systemowej. Szkoda, że nowa wersja wyszła dzień po spotkaniu Grupy :-)

środa, 23 listopada 2011

Node.js i aplikacje CLI - smaczek przed sesją

Na rozgrzewkę przed sesją o Node.js (jutro, na 35. spotkaniu Śląskiej Regionalnej Grupy Microsoft) bardzo prosty programik demonstrujący użycie funkcji http.request(). Mimo, że Node.js to przede wszystkim platforma uruchomieniowa lub raczej środowisko uruchomieniowe dla aplikacji sieciowych (w tym głównie webowych), można je również wykorzystać do tworzenia niekoniecznie prostych programów typu CLI. Poniżej przykład - coś na wzór programu curl, choć tutaj akurat szalenie uproszczonego:



Do zobaczenia na spotkaniu!

piątek, 18 listopada 2011

Przymiarki do cyklu artykułów o Node.js

Jeśli nic dziwnego się nie przydarzy, już w czwartek, 24 listopada będziecie mogli wziąć udział w 35. spotkaniu Śląskiej Regionalnej Grupy Microsoft, podczas którego będę miał przyjemność wystąpić z miniwykładem na temat podstaw Node.js. Oczywiście zapraszam na spotkanie - szczegóły na stronie Grupy.

Po spotkaniu postaram się rozwinąć temat Node.js poprzez cykl (mam nadzieję) artykułów publikowanych w miarę regularnie na tym blogu. Teraz zaś, na zachętę, zamieszczam parę linków do artykułów (po polsku; o wiele więcej informacji znajdziemy w tekstach anglojęzycznych) wprowadzających w szalenie ciekawą tematykę Node, przedstawiających zasady działania i styl pisania aplikacji wykorzystujących to środowisko. Jak sam Ryan Dahl, twórca Node, powiedział, jego program to "tylko" zestaw bibliotek nadbudowanych nad googlowską V8 (bardzo wydajnym silnikiem Javascriptu)... Ładne "tylko" ;-)

Owocnej lektury!

Node.js: na czym polega sterowanie zdarzeniami w serwerze WWW?
Node.js (@-notatnik studenta)
„Zobaczmy to jeszcze raz” – Javascript i Node.js
Node.js – sieć czasu rzeczywistego
Zapachy świeżej kawy: node.js

I jeszcze trzy książki:
The Node Beginner Book
Hands-on Node.js
Mastering Node.js (w opracowaniu, ale część już można pobierać i czytać).