DEV Community

Brittany
Brittany

Posted on

Day 72 : #100DaysofCode - Still Trying To Get API To Work

Today I focused on my photo application again. I am still trying to figure out exactly how to implement my api and where to put my api calls for my application. The goal is to have a picture and a quote show under the photo and a user to be able to add the picture and quote to their page.

So far I was able to implement what I learned about api calls during my cli project into this project. To get started, I am using two free apis. quotes.rest and unsplash .

I just wanted to see if I could make an api call today and luckily I was able to! I created a photos controller and within the photos#index I added the following code:

class PhotosController < ApplicationController
    def index 
        @photo = "https://source.unsplash.com/random"

        url = "https://quotes.rest/qod"
        uri = URI.parse(url)
        response = Net::HTTP.get_response(uri)
        res = JSON.parse(response.body)
        @quote = res["contents"]["quotes"][0]["quote"]
        author = res["contents"]["quotes"][0]["author"]
        category = res["contents"]["quotes"][0]["category"]
    end 
end
Enter fullscreen mode Exit fullscreen mode
The photo

@photo = "https://source.unsplash.com/random" holds the photo url for the views page.

The quote

@quote = res["contents"]["quotes"][0]["quote"] holds the quote! I made an Net::HTTP request to the api and was able to get the quote along with the author and category provided by the quotes.rest api. I know all of this is very messy and needs to be out of my controller BUT I am proud of myself that I was able to make two calls to an api and show it in my views like this:

<h1> This is photos index </h1>

<div class="cards">
<% 20.times do  %>
    <div class="card">
        <img src="<%= @photo %>" alt="random" >
        <br/>
        <p> <%= @quote %> </p>

    </div>
<% end%>
</div>
Enter fullscreen mode Exit fullscreen mode

This is the beginning of a beautiful friendship with rails and apis.

As always, thanks for reading!

Sincerely,
Brittany

Song of the day: (I was with my 1 year old nephew all day today and I love Disney haha)

Top comments (0)