react-chat-api
react-chat-api copied to clipboard
📡 API for chat application for DogeCodes React course
Chat API
API for chat application for DogeCodes React course.
This is a simple API server that implements a logic required to correct work of DogeCodes React Chat application.
Requirements
To run this server localy you need to have these requirements:
Installations
Use following commands to run this API-server localy:
git clone https://github.com/dogecodes/react-chat-api.git
cd react-chat-api
npm install
npm run start:dev # or `npm start` for production
Note: Don't forget to start mongod
for connection to database.
API
Current version of API is v1
, so you need to specify the version of API before every route. For example:
http://localhost:8000/v1/users/me
http://localhost:8000/v1/chats
HTTP
Here's the map of API's HTTP routes:
-
/
— routes related to authentication.-
/signup
POST — create new user withusername
andpassword
. -
/login
POST — log user in withusername
andpassword
. -
/logout
GET — log out active user.
-
-
/users
— routes related to users.-
/users
GET — retrieve data about all users. -
/users/me
GET — retrieve my user's data. -
/users/me
POST — update my user's information (username
,firstName
,lastName
andcity
). -
/users/:id
GET — retrieve information about user with specific:id
.
-
-
/chats
— routes related to chats.-
/chats
GET — retrieve information about all chats. -
/chats
POST — create new chat with specifiedtitle
. -
/chats/my
GET — get list of all user's chats. -
/chats/:id
GET — get chat's information with messages by specific chat's:id
. -
/chats/:id
POST — send new message to chat with specific:id
. -
/chast/:id
DELETE — delete chat with specific:id
. Only creator of the chat can delete it. -
/chats/:id/join
GET — join chat with specific:id
. -
/chats/:id/leave
GET — leave chat with specific:id
.
-
If you're using Insomnia for debugging APIs, you can download a workspace backup:
Sockets
This API also emmits and listens some socket.io events.
Sockets connection requires authentication with access-token. Here's an example of establishing sockets connection:
import SocketIOClient from 'socket.io-client';
socket = SocketIOClient('path/to/api', {
query: {
token: '...your access-token here...',
},
});
Here's the list of events:
Emmiting
-
new-message
— emmited when someone sends new message to specific chat. -
new-chat
— emmited when someone creates new chat. -
deleted-chat
— emmited when someone deletes a chat.
Listening
-
connection
— connection of socket.io client. -
mount-chat
— mount a client to listen for messages in chat with specific:chatId
. -
unmount-chat
— unmout a client from listening for messages in chat with specific:chatId
. -
send-message
— send message withcontent
to chat with
License
MIT © Denys Dovhan