Welcome to Part 5 of the COVIDiary project! If you’re just joining us or missed a post, here’s what we’ve done so far:
- Part 1: Project Introduction
- Part 2: Initial Setup
- Part 3: Building the Database
- Part 4: Frontend Setup
- Part 4.5: Database Fixes
This week’s post was super duper long, and it covered lots and lots of code across the front and back end. My inner editor put her foot down, and I have now broken that massive tome into not one, but four smaller posts that focus on specific concepts or tasks.
Today, we’re going to work on the back end. By the end of today, we will have all our backend routing configured and ready to go.
We’ll start by configuring our routes. We want to add
/api to our backend routes so we can better keep things straight.
To keep our files organized, make an
/api directory in your
/controllers directory, and place your controllers within it.
Note: You probably don’t have the
users_controller.rb yet. If that’s the case, now is a perfect time to add it. In your terminal, run
rails g controller api/users.
Now we’ll wrap our resources within an
/api namespace in our
rails.application.routes.draw do # wrap routes in /api namespace namespace :api do # create index route for all entries at /api/entries resources :entries # create routes for users at /api/users resources :users end end
We only want
/api/entries so we can see the list of all public entries. We want to nest our CRUD actions for specific entries under specific users. Let’s make some minor changes to accomplish this.
rails.application.routes.draw do namespace :api do # creates index route for all entries at /api/entries resources :entries, only: [:index] resources :users do # create all CRUD routes for a specific user's entries at api/users/:user_id/entries resources :entries end end end
At this point, you can run
rails routes in your terminal to see all the routes we’ve just created.
We are one step closer to hooking up our front and back ends. Next week, we’ll format our data so we can send it to our client app. We’re making progress!