ตัวอย่างด้านล่างแสดงการใช้งาน API ด้วย C# ใน 3 รูปแบบ:
เริ่มด้วยการขอรับ refresh-token และ access-token โดยใช้ username, password
C#: ตัวอย่าง C# Console app ใช้ HttpClient เพื่อขอ token จาก API โดยตรง
ASP.NET (Controller): ตัวอย่าง Controller ในโปรเจกต์ webapi ที่รับ username/password และเรียก API เพื่อขอ token
ASP.NET (Minimal): ตัวอย่าง minimal API (dotnet new web) ที่มี endpoint สำหรับขอ token
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using System.Collections.Generic;
class Program
{
static async Task Main()
{
string username = "your_username";
string password = "your_password";
using var client = new HttpClient();
var data = new Dictionary
{
["username"] = username,
["password"] = password
};
var response = await client.PostAsJsonAsync("https://hcode.moph.go.th/api/token/", data);
var tokens = await response.Content.ReadFromJsonAsync>();
Console.WriteLine("Refresh Token: " + tokens["refresh"]);
Console.WriteLine("Access Token: " + tokens["access"]);
}
}
using Microsoft.AspNetCore.Mvc;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using System.Collections.Generic;
[ApiController]
[Route("[controller]")]
public class TokenController : ControllerBase
{
[HttpPost("get-tokens")]
public async Task GetTokens([FromQuery] string username = "your_username", [FromQuery] string password = "your_password")
{
using var client = new HttpClient();
var data = new Dictionary
{
["username"] = username,
["password"] = password
};
var response = await client.PostAsJsonAsync("https://hcode.moph.go.th/api/token/", data);
var tokens = await response.Content.ReadFromJsonAsync>();
return Ok(tokens);
}
}
using System.Net.Http.Json;
using System.Collections.Generic;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/get-tokens", async (string username = "your_username", string password = "your_password") =>
{
using var client = new HttpClient();
var data = new Dictionary
{
["username"] = username,
["password"] = password
};
var response = await client.PostAsJsonAsync("https://hcode.moph.go.th/api/token/", data);
var tokens = await response.Content.ReadFromJsonAsync>();
return Results.Ok(tokens);
});
app.Run();
รันโค้ดหรือเรียก endpoint ข้างต้นเพื่อรับ token
C#: ด้านล่างเป็นตัวอย่างการใช้ refresh-token เพื่อขอ access-token ใหม่
ASP.NET (Controller): เพิ่ม Endpoint สำหรับ refresh-token ใน Controller เช่นเดียวกับ get-tokens
ASP.NET (Minimal): เพิ่ม MapPost สำหรับ refresh-token request เช่นเดียวกับ get-tokens
using System;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using System.Collections.Generic;
class RefreshAccess
{
static async Task Main()
{
string refreshToken = "your_refresh_token_here";
using var client = new HttpClient();
var data = new Dictionary
{
["refresh"] = refreshToken
};
var response = await client.PostAsJsonAsync("https://hcode.moph.go.th/api/token/refresh/", data);
var json = await response.Content.ReadFromJsonAsync>();
Console.WriteLine("New Access Token: " + json["access"]);
}
}
using Microsoft.AspNetCore.Mvc;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;
using System.Collections.Generic;
[ApiController]
[Route("[controller]")]
public class RefreshController : ControllerBase
{
[HttpPost("refresh-token")]
public async Task RefreshToken([FromQuery] string refresh = "your_refresh_token_here")
{
using var client = new HttpClient();
var data = new Dictionary
{
["refresh"] = refresh
};
var response = await client.PostAsJsonAsync("https://hcode.moph.go.th/api/token/refresh/", data);
var json = await response.Content.ReadFromJsonAsync>();
return Ok(json);
}
}
using System.Net.Http.Json;
using System.Collections.Generic;
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapPost("/refresh-token", async (string refresh = "your_refresh_token_here") =>
{
using var client = new HttpClient();
var data = new Dictionary
{
["refresh"] = refresh
};
var response = await client.PostAsJsonAsync("https://hcode.moph.go.th/api/token/refresh/", data);
var json = await response.Content.ReadFromJsonAsync>();
return Results.Ok(json);
});
app.Run();