หากคุณเคยค้นหา httpYac คุณน่าจะต้องการวิธีส่ง HTTP request จากไฟล์ข้อความธรรมดาที่เก็บใน Git ได้ เปิดใช้ใน VS Code ได้ และนำไปรันซ้ำใน CI ได้โดยไม่ต้อง export/import เพิ่มเติม httpYac ทำงานด้วยไฟล์ .http/.rest ผ่านทั้ง VS Code extension และ Node.js CLI บทความนี้พาเริ่มใช้งานแบบลงมือทำ ตั้งแต่โครงสร้างไฟล์ ตัวแปร assertion ไปจนถึงการรันใน CI และจุดที่ควรเลือกใช้ GUI platform แทนไฟล์ข้อความล้วน สำหรับพื้นฐานเพิ่มเติม ดู คู่มือการทดสอบ API
httpYac คืออะไร
httpYac คือ HTTP client แบบโอเพนซอร์สที่ใช้ไฟล์ .http เป็นศูนย์กลาง คุณเขียน request เป็นข้อความธรรมดา แล้วส่ง request ได้จาก editor หรือจาก terminal ด้วยคำสั่งเดียว โปรเจกต์อยู่บน GitHub และมีเอกสารที่ httpyac.github.io
โมเดลหลักของ httpYac คือ:
- เก็บ request ไว้ข้างโค้ดใน repo
- review diff ได้ใน pull request
- ใช้ไฟล์เดียวกันทั้งตอนทดสอบในเครื่องและตอนรันใน CI
- ไม่ต้องมีขั้นตอน export collection แยกต่างหาก
เครื่องมือนี้มี 2 ส่วนหลัก:
-
VS Code extension: เพิ่มปุ่ม
Send Requestเหนือแต่ละ request, แสดง response preview และสลับ environment ได้จาก editor -
CLI (
httpyac): ติดตั้งผ่าน npm แล้วรันไฟล์.httpแบบ headless เหมาะสำหรับ CI/CD
เพราะทั้ง extension และ CLI อ่านไฟล์เดียวกัน สิ่งที่คุณ commit คือสิ่งที่ pipeline นำไปรันจริง
เริ่มต้นติดตั้ง httpYac
ติดตั้ง CLI ด้วย npm:
npm install -g httpyac
ตรวจสอบว่าใช้งานได้:
httpyac --version
ถ้าใช้ VS Code ให้ติดตั้ง extension ชื่อ httpYac แล้วสร้างไฟล์เช่น:
api/users.http
จากนั้นคุณสามารถกด Send Request ใน VS Code หรือรันจาก terminal ได้ทันที
httpyac send api/users.http
รูปแบบไฟล์ .http
ไฟล์ .http คือรายการ request ที่คั่นด้วย ### แต่ละ request เขียนใกล้เคียงกับ HTTP raw format
### Get a user
GET https://api.example.com/users/42
Accept: application/json
### Create a user
# @name createUser
POST https://api.example.com/users
Content-Type: application/json
{
"name": "Ada Lovelace",
"email": "ada@example.com"
}
### Use a value from the previous response
GET https://api.example.com/users/{{createUser.response.body.$.id}}
Authorization: Bearer {{token}}
สิ่งที่ควรรู้จากตัวอย่างนี้:
-
###ใช้แบ่ง request -
# @name createUserตั้งชื่อ request เพื่ออ้างอิง response ภายหลัง -
{{...}}ใช้แทนค่าตัวแปรหรือค่าจาก response ก่อนหน้า - รูปแบบนี้คล้ายกับ REST Client extension จึงมักย้ายไฟล์ไปมาได้โดยแก้ไขเพียงเล็กน้อย
ใช้ตัวแปรและ environment
httpYac อ่านตัวแปรได้จากหลายแหล่ง เช่น .env, http-client.env.json และตัวแปร inline ในไฟล์ request
ตัวอย่างกำหนด host แบบ inline:
@host = https://api.staging.example.com
### Login
# @name login
POST {{host}}/auth/login
Content-Type: application/json
{
"user": "{{USERNAME}}",
"pass": "{{PASSWORD}}"
}
เก็บ secret ไว้ใน .env และไม่ commit เข้า Git:
USERNAME=demo@example.com
PASSWORD=secret-password
เพิ่ม .env ใน .gitignore:
.env
ใน CI ให้ map ค่าเหล่านี้จาก environment variables หรือ secret manager ของ pipeline แทน เช่น GitHub Actions secrets, GitLab CI variables หรือ Jenkins credentials
เขียน request flow แบบ login แล้วใช้ token
กรณีใช้งานจริงมักต้อง login ก่อน แล้วนำ token ไปใช้กับ request ถัดไป
@host = https://api.staging.example.com
### Login
# @name login
POST {{host}}/auth/login
Content-Type: application/json
{
"user": "{{USERNAME}}",
"pass": "{{PASSWORD}}"
}
### Get profile
GET {{host}}/me
Authorization: Bearer {{login.response.body.$.token}}
Accept: application/json
รูปแบบนี้เหมาะกับ smoke test หรือ integration check แบบสั้น ๆ เช่น:
- login สำเร็จ
- ดึงข้อมูลผู้ใช้ได้
- สร้าง resource ได้
- อ่าน resource ที่สร้างขึ้นได้
- ลบ resource หลังทดสอบ
เพิ่ม assertion ด้วย JavaScript
httpYac รองรับการฝัง JavaScript เพื่อทำ pre-request และ post-request script ได้ คุณจึงตรวจ status code, body หรือ export ค่าไปใช้ต่อได้
### Login and capture token
# @name login
POST {{host}}/auth/login
Content-Type: application/json
{
"user": "{{USERNAME}}",
"pass": "{{PASSWORD}}"
}
{{
// post-request script
test("status is 200", () => {
client.assert.strictEqual(response.statusCode, 200);
});
test("token exists", () => {
client.assert.ok(response.parsedBody.token);
});
exports.token = response.parsedBody.token;
}}
จากนั้นใช้ token ใน request ถัดไป:
### Get current user
GET {{host}}/me
Authorization: Bearer {{token}}
{{
test("status is 200", () => {
client.assert.strictEqual(response.statusCode, 200);
});
test("response has id", () => {
client.assert.ok(response.parsedBody.id);
});
}}
แนวทางนี้เหมาะเมื่อคุณต้องการ logic เล็กน้อยโดยไม่ต้องสร้าง test framework เต็มรูปแบบ
รัน httpYac ใน CI
CLI คือจุดที่ทำให้ไฟล์ .http ใช้ได้จริงใน pipeline
npm install -g httpyac
# Run a single file
httpyac send api/users.http
# Run every request in a folder, pick an environment, fail on assertion errors
httpyac send --all --env staging "api/**/*.http"
เมื่อ assertion ล้มเหลว httpYac จะ exit ด้วย non-zero status code ทำให้ CI job fail ได้ตามปกติ
ตัวอย่าง GitHub Actions แบบพื้นฐาน:
name: API checks
on:
pull_request:
push:
branches:
- main
jobs:
httpyac:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- name: Install httpYac
run: npm install -g httpyac
- name: Run API checks
env:
USERNAME: ${{ secrets.API_USERNAME }}
PASSWORD: ${{ secrets.API_PASSWORD }}
run: httpyac send --all --env staging "api/**/*.http"
ถ้าทีมของคุณใช้ GitLab CI หรือ Jenkins หลักการเหมือนกัน: ติดตั้ง Node.js, ติดตั้ง httpyac, inject secret แล้วรันไฟล์ .http
ควรใช้ httpYac เมื่อใด
httpYac เหมาะเมื่อ workflow ของทีมเน้นไฟล์ข้อความและ Git เป็นหลัก
| สถานการณ์ | เหตุผลที่ httpYac เหมาะ |
|---|---|
| คุณใช้ VS Code เป็นหลัก | ส่ง request ได้จาก editor โดยไม่ต้องสลับเครื่องมือ |
| คุณต้องการเก็บ request ใน Git | ไฟล์ข้อความ diff ง่าย review ใน PR ได้ |
| ทีมคุ้นเคยกับโค้ด | ตัวแปร, .env และ JavaScript assertion เหมาะกับ developer |
| ต้องการ smoke test หรือ integration check จำนวนไม่มาก | เพิ่มไฟล์และรันใน CI ได้เร็ว |
| ใช้ไฟล์ REST Client อยู่แล้ว | รูปแบบไฟล์ใกล้เคียงกัน ทำให้ย้ายมาได้ง่าย |
httpYac อาจไม่เหมาะเท่าไรเมื่อ:
- คนที่ไม่ใช่นักพัฒนาต้องแก้ request บ่อย
- ต้องการ UI สำหรับจัดการชุด request ขนาดใหญ่
- ต้องการ environment ที่แชร์และ sync ให้ทั้งทีมโดยไม่ต้องจัดการไฟล์เอง
- ต้องการ mock server, documentation และ reporting อยู่ในที่เดียว
- ต้องการ onboarding สมาชิกใหม่โดยไม่ต้องอธิบายโครงสร้างไฟล์มาก
ข้อดีของไฟล์ข้อความจะชัดเจนมากในทีม developer-heavy แต่เมื่อชุด API โตขึ้นและมีหลาย role เข้ามาเกี่ยวข้อง GUI platform อาจจัดการง่ายกว่า
httpYac เทียบกับแพลตฟอร์ม GUI และ CI
httpYac คือเครื่องมือรัน request จากไฟล์ข้อความ ส่วน Apidog เป็น API platform แบบ GUI-first ที่สามารถทำงานร่วมกับ CI ได้เช่นกัน ทั้งสองแก้ปัญหาคนละมุม
จุดสำคัญที่ต้องเข้าใจก่อนคือ Apidog ไม่ได้รันหรือ parse ไฟล์ .http โดยตรง ถ้า source of truth ของคุณคือโฟลเดอร์ไฟล์ .http httpYac คือเครื่องมือที่เหมาะกับงานนั้นโดยตรง
| ความสามารถ | httpYac | Apidog |
|---|---|---|
| แหล่งที่มาของ request | ไฟล์ .http/.rest ใน Git |
request แบบภาพใน workspace รวมถึงการนำเข้า OpenAPI |
| วิธีแก้ไข | เขียนข้อความใน VS Code หรือ editor ใดก็ได้ | visual builder พร้อม form field และ schema awareness |
| ตัวแปรและ environment |
.env, JSON, inline variables |
environment ที่จัดการและแชร์กับทีมได้ |
| Assertion | JavaScript ใน request script | visual assertion พร้อม scripting |
| การรันใน CI | httpyac send |
apidog run |
| Mock และ documentation | ไม่มีมาในตัว | mock server และ documentation ในตัว |
| เหมาะสำหรับ | developer ที่ต้องการไฟล์ข้อความใน Git | ทีมที่ต้องการ design, test, mock และ docs ใน workspace เดียว |
ถ้าคุณต้องการ workflow แบบภาพ Apidog ช่วยให้สร้าง จัดระเบียบ และแชร์ request ได้โดยไม่ต้องเขียนไฟล์ .http เอง จากนั้นรัน scenario เดียวกันใน CI ด้วย apidog run ดูรายละเอียดได้ที่ เอกสารอ้างอิง apidog run
หาก mock API เป็น requirement สำคัญ บทความ เครื่องมือจำลองปลายทาง REST ครอบคลุมตัวเลือกต่าง ๆ เพิ่มเติม
สรุปแบบใช้งานจริง:
- ใช้ httpYac เมื่อ workflow คือ “ไฟล์ใน Git → รันใน editor → รันซ้ำใน CI”
- ใช้ Apidog เมื่อทีมต้องการ shared workspace, managed environment, mock server, documentation และ CI runner
- ใช้ ทั้งสองอย่าง ได้ ถ้าต้องการ httpYac สำหรับ local checks และ Apidog เป็น source of truth ระดับทีม
คำถามที่พบบ่อย
httpYac ฟรีหรือไม่
ฟรี httpYac เป็นโอเพนซอร์สภายใต้ MIT License ทั้ง VS Code extension และ CLI สามารถติดตั้งและใช้งานได้โดยไม่ต้องมี paid plan หรือบัญชีผู้ใช้สำหรับการรัน request ในเครื่องหรือใน CI
httpYac ต่างจาก REST Client extension อย่างไร
ทั้งสองใช้รูปแบบไฟล์ .http คล้ายกัน ทำให้ไฟล์พกพาได้ในหลายกรณี ความแตกต่างหลักคือ httpYac มี CLI แบบ standalone สำหรับการรัน headless และ CI รวมถึงความสามารถด้าน environment, scripting และ assertion ที่ครอบคลุมกว่า
ถ้าคุณส่ง request เฉพาะใน VS Code ทั้งสองตัวอาจเพียงพอ แต่ถ้าต้องรันไฟล์เดียวกันใน pipeline CLI ของ httpYac คือข้อได้เปรียบสำคัญ ดูภาพรวมเครื่องมือเพิ่มเติมได้ที่ ปลั๊กอิน VS Code สำหรับการทดสอบ API
httpYac แทนที่ Postman ได้หรือไม่
ได้ในบาง workflow โดยเฉพาะทีม developer ที่ต้องการ request แบบข้อความธรรมดา เก็บใน Git และรันใน CI โดยไม่ต้องใช้ GUI
แต่ถ้าทีมต้องการ shared collection แบบภาพ, managed environment, mock server และ documentation ในตัว แพลตฟอร์มอย่าง Apidog จะเหมาะกว่า เปรียบเทียบตัวเลือกอื่นได้ในบทความ ไคลเอนต์ทดสอบ API ยอดนิยม
httpYac รองรับ GraphQL และ gRPC หรือไม่
httpYac รองรับ GraphQL และโปรโตคอลอื่นนอกเหนือจาก REST รวมถึงบางกรณีของ streaming แต่ความสามารถอาจเปลี่ยนแปลงตาม release ควรตรวจเอกสารทางการสำหรับรายการ protocol ล่าสุด
สำหรับ REST ทั่วไป ไฟล์ .http ครอบคลุม verb, header, body และ authentication flow พื้นฐานได้ทันที
บทสรุป
httpYac เหมาะกับงานที่ชัดเจนมาก: เขียน HTTP request เป็นไฟล์ข้อความ เก็บใน Git รันจาก VS Code และรันซ้ำใน CI ด้วยไฟล์เดียวกัน จุดแข็งคือความเรียบง่าย, review ง่าย, script ได้ และมี CLI ฟรีสำหรับ pipeline
ข้อแลกเปลี่ยนคือ workflow นี้คาดหวังให้ผู้ใช้เข้าใจไฟล์, ตัวแปร, secret และ JavaScript assertion พอสมควร จึงเหมาะกับทีม developer-heavy มากกว่าทีมที่ต้องการ UI กลางสำหรับทุก role
ถ้าคุณต้องการสร้าง request ด้วยภาพ แชร์ environment ที่จัดการได้ จำลอง endpoint และสร้าง documentation พร้อมรัน test ใน CI Apidog รวมสิ่งเหล่านี้ไว้ใน workspace เดียว คุณสามารถ ดาวน์โหลด Apidog แล้วรันชุดทดสอบด้วย apidog run หรือใช้ httpYac สำหรับ local checks และให้ Apidog เป็น source of truth ของทีมก็ได้ เลือกโมเดลที่ตรงกับวิธีทำงานของทีมคุณ

Top comments (0)