Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/monicaalyssa/movie-api
RESTful API built with Node.js and Mongoose for the PopcornPal application to handle movie and user data.
https://github.com/monicaalyssa/movie-api
bcrypt express javascript jwt mongodb mongoose nodejs passportjs postman
Last synced: 8 days ago
JSON representation
RESTful API built with Node.js and Mongoose for the PopcornPal application to handle movie and user data.
- Host: GitHub
- URL: https://github.com/monicaalyssa/movie-api
- Owner: monicaalyssa
- Created: 2024-05-15T02:34:40.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-12-28T19:01:14.000Z (30 days ago)
- Last Synced: 2024-12-28T19:28:56.402Z (30 days ago)
- Topics: bcrypt, express, javascript, jwt, mongodb, mongoose, nodejs, passportjs, postman
- Language: JavaScript
- Homepage:
- Size: 251 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Installation
To use this application locally, follow these steps inside your terminal:
1. Clone this repository to your local machine:
```bash
git clone https://github.com/monicaalyssa/movie-api
```2. Navigate to the project directory: `cd movie-api`
3. Install dependencies: `npm install`
4. Start the development server: `npm start`
5. Open your browser and visit: `http://localhost:8082`## API Endpoints
**Base URL**
```
https://popcornpal-32d285ffbdf8.herokuapp.com/
```#### Existing movie data
GET
/movies
(gets a list of all movies)
##### Parameters
> | None |
> |---------------|##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON array of objects
GET
/movies/{uuid}
(gets data about a specific movie by id)
##### Parameters> | Name | Data Type | Description |
> |--------|----------------|------------------------------------------------------|
> | `uuid` | string | The specific movie id |##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON object
> | `500` | `text/html; charset=utf-8` | `"Error: " + message`##### Example Request
`https://popcornpal-32d285ffbdf8.herokuapp.com/movies/666f4ac82ea46717e439e608`##### Example Response (200 OK)
```json
{
"Genre": {
"Name": "Mystery",
"Description": "Mystery involves a mysterious death or a crime to be solved."
},
"Director": {
"Name": "Sam Esmail",
"Bio": "Sam Esmail is an American producer and writer, with 5 film award wins.",
"Birthdate": "1977-09-17T00:00:00.000Z"
},
"_id": "666f4ac82ea46717e439e608",
"Title": "Leave the World Behind",
"Description": "A family's getaway to a luxurious rental home takes an ominous turn when a cyberattack knocks out their devices, and two strangers appear at their door.",
"ImageURL": "https://m.media-amazon.com/images/M/MV5BMTUzM2I3NDEtMjNhYi00NTQ0LThmZDItZTMyMzM2MjJmZGRjXkEyXkFqcGdeQXVyMTU3NDU4MDg2._V1_.jpg",
"Featured": false,
"BannerURL": "https://stadt-bremerhaven.de/wp-content/uploads/2023/10/Leave-the-world-behind.jpg",
"Duration": "2h20m"
}
```
GET
/genre/{genrename}
(gets data about a specific genre by name)
##### Parameters
> | Name | Data Type | Description |
> |--------|----------------|------------------------------------------------------|
> | `genrename` | string | The name of the genre (case sensitive) |##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON object
> | `404` | `text/html; charset=utf-8` | `genrename + "genre not found"`##### Example Request
`https://popcornpal-32d285ffbdf8.herokuapp.com/genre/Fantasy`##### Example Response (200 OK)
```json
{
"Name": "Fantasy",
"Description": "Fantasy stories are set in a faraway or fictional universe and are usually inspired by mythology and folklore."
}
```
GET
/directors/{directorname}
(gets data about a specific director by name)
##### Parameters
> | Name | Data Type | Description |
> |--------|----------------|------------------------------------------------------|
> | `directorname` | string | The name of the director (case sensitive) |##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON object
> | `404` | `text/html; charset=utf-8` | `directorname + " not found"`##### Example Request
`https://popcornpal-32d285ffbdf8.herokuapp.com/directors/James Cameron`##### Example Response (200 OK)
```json
{
"Name": "James Cameron",
"Bio": "James Cameron is a Canadian filmmaker known for his expansive vision and innovative special-effects films, most notably Titanic (1997), and Avatar (2009).",
"Birthdate": "1954-08-16T00:00:00.000Z"
}
```
GET
/users/{username}
(gets data about a specific user)
##### Parameters
> | Name | Data Type | Description |
> |--------|----------------|------------------------------------------------------|
> | `username` | string | Users username |##### Auth Parameters
> | Auth Type | Value | Description |
> |--------|----------------|------------------------------------------------------|
> | `Bearer Token` | string | JWT Token |##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON object
> | `404` | `text/html; charset=utf-8` | `"User with username" + username + " not found"`
> | `401` | `text/plain; charset=utf-8` | `"Unauthorized"`##### Example Request
`https://popcornpal-32d285ffbdf8.herokuapp.com/users/johndoe`##### Example Response (200 OK)
```json
{
"_id": "6262a50dc4d247589f699b38ab9204f4",
"Username": "johndoe",
"Password": "$2b$12$q3lFXBytAOfnH5mXYll.AOH6rnNmXzbEmtsK61jUONaCW02wKz11W",
"Email": "[email protected]",
"Birthday": "1997-03-20T00:00:00.000Z",
"Favorites": [],
"__v": 0
},
```
POST
/login
(authenticates a user and returns a JWT token)
##### Query Parameters
> | Key | Value | Description |
> |--------|----------------|------------------------------------------------------|
> | `Username` | string | User username |
> | `Password` | string | User password |##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON object of objects
> | `401` | `text/html; charset=utf-8` | `"Invalid username or password"`##### Example Request
`https://popcornpal-32d285ffbdf8.herokuapp.com/login?Username=johndoe&Password=password123`##### Example Response (200 OK)
```json
{
"user": {
"_id": "6262a50dc4d247589f699b38ab9204f4",
"Username": "johndoe",
"Password": "$2b$12$q3lFXBytAOfnH5mXYll.AOH6rnNmXzbEmtsK61jUONaCW02wKz11W",
"Email": "[email protected]",
"Birthday": "1997-03-20T00:00:00.000Z",
"Favorites": [],
"__v": 0
},
"token": "Lmi97X7rSYyEVywRuee2sYlODgI0W7pFpAscfOPggAuwe6CaCi7WumymeBzH8bUm8JS9TKu4fD88VB42E1HO9Qe8fiLOJbfPtFq1taGtdV4rzoCxZ4L3AdEPwVexWSGAESVjIRRlCc7e84ChB5V5i19iZmGtulGfwXTQ-rrihSqU0-p4CsMXfommD79Qqehtgv-6JlzZcILXc-WOsSBkSCVMoTW5p6ppVPZH"
}
```
GET
/users
(gets a list of all users and their favorite movies)
##### Auth Parameters
> | Auth Type | Value | Description |
> |--------|----------------|------------------------------------------------------|
> | `Bearer Token` | string | JWT Token |##### Responses
> | HTTP Code | Content-Type | Response |
> |---------------|-----------------------------------|---------------------------------------------------------------------|
> | `200` | `application/json; charset=utf-8` | JSON array of objects