Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vbrazhnik/chat-room-api
Chat Room RESTful API [MongoDB + Express.js + Node.js]
https://github.com/vbrazhnik/chat-room-api
chat-room express-js mongodb mongoose node-js restful-api
Last synced: 7 days ago
JSON representation
Chat Room RESTful API [MongoDB + Express.js + Node.js]
- Host: GitHub
- URL: https://github.com/vbrazhnik/chat-room-api
- Owner: VBrazhnik
- Created: 2019-02-09T23:34:49.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2019-02-13T12:11:11.000Z (almost 6 years ago)
- Last Synced: 2024-02-05T15:53:07.957Z (10 months ago)
- Topics: chat-room, express-js, mongodb, mongoose, node-js, restful-api
- Language: JavaScript
- Size: 28.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Chat Room API
Chat Room RESTful API was developed using MongoDB, Express.js and Node.js.
## Task
### Description
Unauthenticated users can post messages in chat so others can read them.
Messages need to be saved to the database.### Basic requirements
* Koa/Express, MongoDB
* The message must contain author (unauthenticated user) email and text, create date and update date
* Email validation (regex to check if that is a real email)
* Message validation (regex to check if a message is not empty string, and length < 100)### API methods
* `GET` method for getting all messages with pagination by 10 messages per request (e.g. `/api/messages/list/0` will return first 10 messages)
* `GET` method for getting single message by unique identifier (e.g. `/api/messages/single/59f7303c2f60e5d7e6167dd1`)
* `POST` method for creating a new message (body accepts email and text)
## Documentation
### Installation
Clone repository and install node modules:
```
$ git clone
$ cd
$ npm i
```### Configuration & Execution
You can use environment variables to specify server port and MongoDB database URI:
```
$ PORT= DB_URI= npm start
```If these environment variables were not set, default values will be used. Default values are specified in `config.js` file.
### Message
#### Structure
Field|Data Type|Required|Default|Restrictions|Note
:-----|:-----|:-----|:-----|:-----|:-----
`email`|String|Required|—|Value must be a valid email address|Value will be trimmed and converted to lowercase
`text`|String|Required|—|Length must be less than 100 characters|Value will be trimmed
`create_date`|Date|Not Required|Current date|—|—
`update_date`|Date|Not Required|Current date|—|—#### Schema
```
const Message = new mongoose.model('Message', new mongoose.Schema({
email: {
type: String,
required: true,
trim: true,
lowercase: true,
match: [/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/, 'Invalid email address']
},
text: {
type: String,
required: true,
trim: true,
match: [/^.{1,99}$/, 'Length must be less than 100 characters']
},
create_date: {
type: Date,
default: Date.now
},
update_date: {
type: Date,
default: Date.now
}
}));
```**Note:** Regular expression to validate email [was recommended by W3C](https://www.w3.org/TR/html5/forms.html#valid-e-mail-address).
### RESTful API
URL|HTTP Method|Body of Request|Response
:-----|:-----|:-----|:-----
`/api/messages/list/:page`|`GET`|—|All messages from the given page
`/api/messages/single/:id`|`GET`|—|Message with the given ID
`/api/messages/`|`POST`|JSON|Created message