Ruby HTTP

Objetives

HTTP

Hypertext Transfer Protocol

HTTP Methods

Method Action
GET Read/receive data
POST Create/publis data
PUT Update data
PATCH Patch data
DELETE Delete data

HTTP Status

Method Action
200 OK
201 Create
204 No content
301 Moved permanently
400 Bad request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

Success

Redirect

Client

Server

HTTParty

require 'httparty'

# Use the class methods to get down to business quickly
response = HTTParty.get(
  'https://jsonplaceholder.typicode.com/users'
)

# p response
# p response.methods
p response.parsed_response
# p response.body
# p response.code
# p response.message
# p response.headers
# p JSON.parse(response.body, symbolize_names: true)

# response.parsed_response.each do |user|
#   p user
#   # p "="*5
# end
# puts JSON.parse(response.body, symbolize_names: true)

GET with HTTParty

require 'httparty'

class UserClient
  include HTTParty

  base_uri('https://jsonplaceholder.typicode.com/users')

  def self.index
    response = get("/")
    JSON.parse(response.body, symbolize_names: true)
  end

  def self.show(id)
    response = get("/#{id}")
    JSON.parse(response.body, symbolize_names: true)
  end

  def self.create(user_data)
    options = {
      body: user_data.to_json,
      headers: {
        "Content-Type": "application/json"
      }
    }
    response = post("/", options)
    JSON.parse(response.body, symbolize_names: true)
  end

  def self.update(id, user_data)
    options = {
      body: user_data.to_json,
      headers: {
        "Content-Type": "application/json"
      }
    }
    response = patch("/#{id}", options)
    JSON.parse(response.body, symbolize_names: true)
  end

  def self.destroy(id)
    response = delete("/#{id}")
    JSON.parse(response.body, symbolize_names: true)
  end

end

# p UserClient.index
# p UserClient.show(1)
# p UserClient.create({
#   name: "Paulo",
#   email: "paulo@codeable.la",
#   phone: "987654321"
# })
# p UserClient.update(5, {
#   name: "Paulo",
#   email: "paulo@codeable.la",
#   phone: "987654321"
# })
# p UserClient.destroy(1)

Using HTTParty with class

Ruby HTTP

By Paulo Tijero

Ruby HTTP

  • 66