Skip to content

anisapatel/be-nc-news

Repository files navigation

Northcoders News API

https://daily-newsy.herokuapp.com/api

This api has many endpoints allowing access to northcoders news.

Getting Started

Clone this repo:

git clone https://github.com/anisapatel/be-nc-news.git

cd be-nc-news

Install the dependencies:

npm i

Set up the development and test databases:

npm run setup-dbs

Seed the development databases:

npm run seed

Run the app. It will run on http://localhost:9090:

npm start

To view all the avaialable end points in JSON format, make a GET /api request.

API endpoints

The following endpoints are available:

GET /api/topics

GET /api/users/:username

GET /api/articles/:article_id
PATCH /api/articles/:article_id

POST /api/articles/:article_id/comments
GET /api/articles/:article_id/comments

GET /api/articles

PATCH /api/comments/:comment_id
DELETE /api/comments/:comment_id

GET /api

Each endpoint responds with an object with a key name of what is being sent:

GET /api/topics

Responds with

  • an array of topic objects, each of which should have the following properties:
    • slug
    • description

GET /api/users/:username

Responds with

  • a user object which should have the following properties:
    • username
    • avatar_url
    • name

GET /api/articles/:article_id

Responds with

  • an article object, which should have the following properties:

    • author which is the username from the users table
    • title
    • article_id
    • body
    • topic
    • created_at
    • votes
    • comment_count which is the total count of all the comments with this article_id - you should make use of knex queries in order to achieve this

PATCH /api/articles/:article_id

Request body accepts

  • an object in the form { inc_votes: newVote }

    • newVote will indicate how much the votes property in the database should be updated by

    e.g.

    { inc_votes : 1 } would increment the current article's vote property by 1

    { inc_votes : -100 } would decrement the current article's vote property by 100

Responds with

  • the updated article

POST /api/articles/:article_id/comments

Request body accepts

  • an object with the following properties:
    • username
    • body

Responds with

  • the posted comment

GET /api/articles/:article_id/comments

Responds with

  • an array of comments for the given article_id of which each comment should have the following properties:
    • comment_id
    • votes
    • created_at
    • author which is the username from the users table
    • body

Accepts queries

  • sort_by, which sorts the comments by any valid column (defaults to created_at)
  • order, which can be set to asc or desc for ascending or descending (defaults to descending)

GET /api/articles

Responds with

  • an articles array of article objects, each of which should have the following properties:
    • author which is the username from the users table
    • title
    • article_id
    • topic
    • created_at
    • votes
    • comment_count which is the total count of all the comments with this article_id - you should make use of knex queries in order to achieve this

Should accept queries

  • sort_by, which sorts the articles by any valid column (defaults to date)
  • order, which can be set to asc or desc for ascending or descending (defaults to descending)
  • author, which filters the articles by the username value specified in the query
  • topic, which filters the articles by the topic value specified in the query

PATCH /api/comments/:comment_id

Request body accepts

  • an object in the form { inc_votes: newVote }

    • newVote will indicate how much the votes property in the database should be updated by

    e.g.

    { inc_votes : 1 } would increment the current comments's vote property by 1

    { inc_votes : -1 } would decrement the current comments's vote property by 1

Responds with

  • the updated comment

DELETE /api/comments/:comment_id

Should

  • delete the given comment by comment_id

Responds with

  • status 204 and no content

GET /api

Responds with

  • JSON describing all the available endpoints

Built using:

  • Node.js v13.2.0
  • Express.js
  • PostgreSQL
  • Node postgres
  • Knex v0.20.8
  • Mocha v7.0.0
  • Chai v4.2.0
  • Chai-sorted v0.2.0
  • SuperTest v4.0.2
  • pg v7.17.1
  • nodemon v2.0.2

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published