Laboratorium 7 Node.js, mongoose, express

Transkrypt

Laboratorium 7 Node.js, mongoose, express
Laboratorium 7
Node.js, mongoose, express-generator, własne moduły – cz. 3
Zadanie 0 – ostatnie zadanie z laboratorium 6, proste API na bazie mongoose
Korzystając z przykładu z wykładu na bazie kolekcji z zadania 1 tworzymy proste API.
Dokumenty w kolekcji powinny zawierać informację o użytkowniku (jako hasło
przechowujemy skrót hasła, np. sha1).
{
"_id":"570adc5972104b451fd0beae",
"username":"jann",
"password":"ac1ab23d6288711be64a25bf13432baf1e60b2bd",
"last":"Kowalski",
"first":"Januszek",
"__v":0
}
Będzie potrzebny moduł body-parser do obsługi formatu JSON i metody POST.
Hasło użytkownika można otrzymać korzystając z funkcji skrótu, np. md5 czy sha1, np.:
userHash = md5( user.password );
Zasób (URI) POST
api/users
api/users/:id
GET
tworzenie nowego lista wszystkich
użytkownika
użytkowników
–––––
PUT
–––––
DELETE
–––––
użytkownik o ID aktualizacja
usunięcie
użytkownika o ID użytkownika o ID
Dodać informację na stronie głównej (statyczna strona) z opisem API, jak powyżej.
Zadanie 1
Przenieść funkcjonalność zadania 0 do pełnego szablonu aplikacji wygenerowanego z
express-generator.
W pliku głównym aplikacji ma być fragment adresu dostępu do wszystkich API w aplikacji
(tutaj '/api'). Do obsługi jednej/każdej kolekcji w bazie wykorzystać osobny moduł.
Zasób (URI) POST
api/users
api/users/:id
GET
tworzenie nowego lista wszystkich
użytkownika
użytkowników
–––––
PUT
–––––
DELETE
–––––
użytkownik i ID aktualizacja
usunięcie
użytkownika o ID użytkownika o ID
Dodać informację na stronie głównej (statyczna strona) z opisem API, jak powyżej.
Adresy ULR udostępnionego API umieścić w zmiennych, których wartości wyświetlimy w
szablonie.
Szablony powinny być przynajmniej dwa.
1. Ogólny, odpowiadający za wygląd całej strony (nagłówek, stopka, menu, polubienia z
FB albo reklamy :) )
2. Częściowy, odpowiadający za wyświetlenie konkretnego elementu, np. opisu API.
Zadanie 2
Stworzyć widok (z użyciem szablonu), w którym wyświetlimy listę użytkowników (adres:
/users). Przy każdej pozycji listy proszę dodać przycisk/link pozwalający na usunięcie
danego użytkownika z bazy.
Zadanie 3
Utworzyć kolekcję samochodów, w której każdy dokument zawiera cztery pola (nie licząc pól
_id oraz __v):
{
"nazwa":"Toyota Avensis 1,6D",
"wersja":"Sedan / 4dr",
"liczba":2,
"rocznik":2014
}
Pod adresem /api/cars zrobić analogiczne API jak w zadaniu 1 z kolekcją użytkowników.
Zrobić od razu widok (adres /cars) z prostą listą samochodów w kolekcji.
Zadanie 4
Proszę zrobić powiązanie samochodów z użytkownikami. Każdy samochód MUSI mieć
przypisanego użytkownika. Jeden użytkownik może mieć 0..* samochodów. Jak to zrobić?
• Może być tablica id samochodów w użytkownikach
• Może być id użytkownika dla każdego samochodu
• Może być osobna kolekcja łącząca id samochodu i id użytkownika
• Można do dokumentu użytkowników dodać wewnątrz tablicę dokumentów z
samochodami i przechowywać wszystko w jednej kolekcji...
Metoda dowolna – przy liście użytkowników pod adresem /users ma się wyświetlać lista
użytkowników razem z ich samochodami...
Zadanie 5
Dodać formularz z metodą POST, który będzie dodawał użytkowników do naszej bazy.
Zadanie 6
Dodać funkcjonalność, która pozwala zmienić hasło, pod warunkiem, że w formularzu
podamy prawidłowo poprzednią wartość hasła.
Zadanie 7
Wykorzystując pakiet passport:
https://www.npmjs.com/package/passport
http://mherman.org/blog/2015/01/31/local-authentication-with-passport-and-express-4/
zrobić działające uwierzytelnienie tworząc API:
• /register – rejestracja, tworzenie konta
• /login – logowanie
• /logout – wylogowanie
• /ping – api do testów :)

Podobne dokumenty