Skip to content

Latest commit

 

History

History
162 lines (137 loc) · 8.82 KB

README.md

File metadata and controls

162 lines (137 loc) · 8.82 KB

Alura_ChallengeONE_Java_3

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:
  1. 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:
    • image
    • 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:
    • image
    • 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.
  1. 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:
      • image
      • If the request is successful you will get a 201 status code, the created object and its location("http:/server/topic/TOPIC_ID"):
      • image
      • 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"):
        • This endpoint will return a list of all the topics in a Json format.
        • Example of sucessful response:
        • image
      • Endpoint("/firstTen"):
        • This endpoint will return a list of ten topics ordered by their ascending "creation_date".
      • Endpoint("/title/{title}"):
        • This endpoint allowes you to search a topic by its exact title.
        • An example of a request is "http:/server/topic/title/example-of-title".
        • If the topic is found, you will recive a Json object:
        • image
        • If the topic is not found, you will get a 404 status code.
      • Endpoint("/author/{id}"):
        • This endpoint allowes you to search a topic by an author's id.
        • An example of a request is "http:/server/topic/author/2".
        • If the author's id and topic is found, you will recive a list of topics in a Json format:
        • image
        • If the author's id or topic is not found, you will get a 404 status code.
      • Endpoint("/course/{id}"):
        • This endpoint allowes you to search a topic by a course's id.
        • An example of a request is "http:/server/topic/course/4".
        • If the course's id and topic is found, you will recive a list of topics in a Json format:
        • image
        • If the course's id or topic is not found, you will get a 404 status code.
      • Endpoint("/{id}"):
        • This endpoint allowes you to search a topic by its id.
        • An example of a request is "http:/server/topic/1".
        • If the topic is found, you will recive a Json object:
        • image
        • If the topic is not found, you will get a 404 status code.
    • Method PUT:
      • Endpoint("/{id}"):
        • This endpoint allowes you to update a topic by its id.
        • Example of a valid Json to update a topic:
        • image
        • 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:
        • image
        • If the topic is not found, you will get a 404 status code.
    • 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.
  2. Endpoint("/author"):

  • This endpoint will accept GET and PUT http methods.
  • Method GET:
    • Endpoint("/{id}"):
      • This endpoint allowes you to search an author by its id.
      • An example of a request is "http:/server/author/1".
      • If the author is found, you will recive a Json object:
      • image
      • If the author is not found, you will get a 404 status code.
    • Endpoint("/name/{name}"):
      • This endpoint allowes you to search an author by its exact name.
      • An example of a request is "http:/server/author/name/Pedro-Hernandez".
      • If the author is found, you will recive a Json object:
      • image
      • If the author is not found, you will get a 404 status code.
    • 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:
      • image
      • 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:
      • image
      • 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:
      • image
      • If the author is not found, you will get a 404 status code.
  1. Endpoint("/answer"):
  • This endpoint will accept GET, POST, PUT and DELETE http methods.
  • Method GET:
    • Endpoint("/{id}"):
      • This endpoint allowes you to search an answer by its id.
      • An example of a request is "http:/server/answer/1".
      • If the answer is found, you will recive a Json object:
      • image
      • If the answer is not found, you will get a 404 status code.
  • 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:
      • image
      • If the request is successful you will get a 201 status code, the created object and its location("http:/server/answer/ANSWER_ID"):
      • image
      • If your request is missing something or it is not correct, you will get a 400 status code.
  • Method PUT:
    • Endpoint("/{id}"):
      • This endpoint allowes you to update an answer by its id.
      • Example of a valid Json to update an answer:
      • image
      • 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:
      • image
      • If the answer is not found, you will get a 404 status code.
  • 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.