การใช้งาน API ด้วย Ruby

ด้านล่างคือตัวอย่างการใช้งาน API ผ่าน Ruby สองแบบ:

ใช้ปุ่มด้านล่างเพื่อสลับดูโค้ดตัวอย่างระหว่าง Ruby และ Ruby on Rails

Environment:

1. ขอรับ Token (refresh-token และ access-token)

เริ่มต้นด้วยการขอรับ refresh-token และ access-token โดยใช้ username, password

Ruby: ด้านล่างเป็นตัวอย่างการใช้ Net::HTTP เพื่อขอ token จาก API โดยตรง

Ruby on Rails: ใน Rails ท่านสามารถสร้าง Controller เพื่อรับ username/password จาก params แล้วขอ token จาก API

get_tokens.rb (Ruby)

require 'net/http'
require 'json'
require 'uri'

username = 'your_username'
password = 'your_password'

uri = URI("https://hcode.moph.go.th/api/token/")
req = Net::HTTP::Post.new(uri, {'Content-Type' => 'application/json'})
req.body = {username: username, password: password}.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(req)
end

tokens = JSON.parse(res.body)
puts "Refresh Token: #{tokens['refresh']}"
puts "Access Token: #{tokens['access']}"
tokens_controller.rb (Rails)

class TokensController < ApplicationController
  require 'net/http'
  require 'json'
  require 'uri'

  def get_tokens
    username = params[:username] || 'your_username'
    password = params[:password] || 'your_password'

    uri = URI("https://hcode.moph.go.th/api/token/")
    req = Net::HTTP::Post.new(uri, {'Content-Type' => 'application/json'})
    req.body = {username: username, password: password}.to_json

    res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
      http.request(req)
    end

    tokens = JSON.parse(res.body)
    render json: tokens
  end
end

2. ทดสอบรับ Tokens โดยตรง

รันสคริปต์ Ruby หรือเรียกใช้ Rails endpoint (เช่น POST /tokens/get_tokens?username=...&password=...) เพื่อรับ token


3. ขอ Access-Token ใหม่เมื่อ Access-Token หมดอายุ

ใช้ refresh-token เพื่อขอ access-token ใหม่

Ruby: ตัวอย่างการใช้ refresh-token ในสคริปต์ Ruby ธรรมดา

Ruby on Rails: ท่านสามารถสร้าง action ใน Controller เพื่อส่ง refresh-token และรับ access-token ใหม่

refresh_access.rb (Ruby)

require 'net/http'
require 'json'
require 'uri'

refresh_token = 'your_refresh_token_here'

uri = URI("https://hcode.moph.go.th/api/token/refresh/")
req = Net::HTTP::Post.new(uri, {'Content-Type' => 'application/json'})
req.body = {refresh: refresh_token}.to_json

res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(req)
end

json = JSON.parse(res.body)
puts "New Access Token: #{json['access']}"
tokens_controller.rb (Rails - Refresh)

class TokensController < ApplicationController
  require 'net/http'
  require 'json'
  require 'uri'

  def refresh
    refresh_token = params[:refresh] || 'your_refresh_token_here'

    uri = URI("https://hcode.moph.go.th/api/token/refresh/")
    req = Net::HTTP::Post.new(uri, {'Content-Type' => 'application/json'})
    req.body = {refresh: refresh_token}.to_json

    res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
      http.request(req)
    end

    json = JSON.parse(res.body)
    render json: json
  end
end

สรุป: