Alura Challenge: Forum-Hub. Java BackEnd API REST
This API REST system simulates the functionality of a Forum using four main endpoints. It supports the GET, POST, PUT and DELETE http methods.
-- How does it work --
- Every endpoint that has an object to return, returns it as a Json and a status code.
- The system uses PostgresSQL for the database.
- The url before the endpoints can be adjusted according to the needs.
- As an example: "http:/anyserver/ENDPOINT".
- There are four main endpoints:
- Endpoint("/login"):
- The only http method it accepts is POST.
- This endpoint does not require any kind of authorization, so anyone can access to it.
- You need to send a Json with valid credentials in order to recive a JsonWebToken that will allow you to access all the other endpoints.
- Example of the Json with credentials:
- If your credentials are valid you will recive your JWT and it will valid for two hours according to the UTC(-06:00).
- Example of successful response:
- If your credentials are not valid you will recive a 403 status code.
- Once you have recived your JWT, you will be able to access all the other endpoints.
-
Endpoint("/topic"):
- This endpoint will accept GET, POST, PUT and DELETE http methods.
- Only the active topics will be considered for this functions (status = true).
- Method POST:
- To register a new topic, you need to send a Json which can't have empty information.
- Example of a valid Json:
- If the request is successful you will get a 201 status code, the created object and its location("http:/server/topic/TOPIC_ID"):
- If you try to register a topic with the same "title" and "message" that another topic, you will get a 400 status code.
- Method GET:
- Endpoint("/all"):
- Endpoint("/firstTen"):
- This endpoint will return a list of ten topics ordered by their ascending "creation_date".
- Endpoint("/title/{title}"):
- Endpoint("/author/{id}"):
- Endpoint("/course/{id}"):
- Endpoint("/{id}"):
- Method PUT:
- Endpoint("/{id}"):
- This endpoint allowes you to update a topic by its id.
- Example of a valid Json to update a topic:
- You can omit any of the Json properties as this is only and update.
- If the topic is found and the Json is valid, you will recive a Json of the updated object:
- If the topic is not found, you will get a 404 status code.
- Endpoint("/{id}"):
- Method DELETE:
- Endpoint("/{id}"):
- This endpoint allowes you to delete a topic by its id.
- If the topic is found, you will only get a 200 status code.
- If the topic is not found, you will get a 404 status code.
- Endpoint("/{id}"):
-
Endpoint("/author"):
- This endpoint will accept GET and PUT http methods.
- Method GET:
- Endpoint("/{id}"):
- Endpoint("/name/{name}"):
- Endpoint("/email/{email}"):
- This endpoint allowes you to search an author by its exact email.
- An example of a request is "http:/server/author/email/[email protected]".
- If the author is found, you will recive a Json object:
- If the author is not found, you will get a 404 status code.
- Method PUT:
- Endpoint("/{id}"):
- This endpoint allowes you to update an author by its id.
- Example of a valid Json to update an author:
- You can omit any of the Json properties as this is only and update.
- If the author is found and the Json is valid, you will revice a Json of the updated object:
- If the author is not found, you will get a 404 status code.
- Endpoint("/{id}"):
- Endpoint("/answer"):
- This endpoint will accept GET, POST, PUT and DELETE http methods.
- Method GET:
- Method POST:
- Endpoint("/add"):
- This endpoint allowes you to add a new answer.
- You need to send a Json which can't have empty information.
- Example of a valid Json:
- If the request is successful you will get a 201 status code, the created object and its location("http:/server/answer/ANSWER_ID"):
- If your request is missing something or it is not correct, you will get a 400 status code.
- Endpoint("/add"):
- Method PUT:
- Endpoint("/{id}"):
- This endpoint allowes you to update an answer by its id.
- Example of a valid Json to update an answer:
- You can omit any of the Json properties as this is only and update.
- If the answer is found and the Json is valid, you will revice a Json of the updated object:
- If the answer is not found, you will get a 404 status code.
- Endpoint("/{id}"):
- Method DELETE:
- Endpoint("/{id}"):
- This endpoint allowes you to delete an answer by its id.
- If the answer is found, you will only get a 200 status code.
- If the answer is not found, you will get a 404 status code.
- Endpoint("/{id}"):