---
url: https://docs.ogmabox.com/th/plugins/backend-sdk.md
description: >-
  เอกสารอ้างอิง API ของปลั๊กอินแบ็กเอนด์ Ogma การทำงานในแซนด์บ็อกซ์
  พาธที่เก็บข้อมูล การเข้าถึงประวัติ HTTP ประเด็นที่ตรวจพบ คำสั่ง
  และการผสานรวมกับโฮสต์
---

# เอกสารอ้างอิง SDK แบ็กเอนด์ของปลั๊กอิน {#plugin-backend-sdk-reference}

โค้ดปลั๊กอินแบ็กเอนด์ทำงานในแซนด์บ็อกซ์ JavaScript ของ Ogma และรับออบเจ็กต์ `sdk` จากแอปพลิเคชันโฮสต์

สำหรับรูปแบบแพ็กเกจปลั๊กอิน ฟิลด์มานิเฟสต์ สิทธิ์ และตัวอย่างฉบับเต็ม ให้เริ่มจาก [คู่มือระบบปลั๊กอิน](./README.md)

## จุดเริ่มต้นการทำงาน {#entry-point}

ปลั๊กอินแบ็กเอนด์ต้องมีฟังก์ชัน `init` ให้เรียกใช้:

```js
async function init(sdk) {
  sdk.console.log("plugin started");
}
```

Ogma เรียก `init(sdk)` เมื่อเปิดใช้งานปลั๊กอิน

## เนมสเปซหลัก {#core-namespaces}

| เนมสเปซ | วัตถุประสงค์ |
| --- | --- |
| `sdk.console` | เขียนข้อความลงในบัฟเฟอร์บันทึกของปลั๊กอิน |
| `sdk.meta` | อ่านเมทาดาทาของปลั๊กอินและพาธข้อมูล |
| `sdk.events` | ลงทะเบียนคอลแบ็กสำหรับเหตุการณ์ของ Ogma |
| `sdk.requests` | ค้นข้อมูลในประวัติ HTTP และข้อมูลคำขอ |
| `sdk.findings` | ค้นข้อมูลหรือสร้างประเด็นที่ตรวจพบเมื่อสิทธิ์อนุญาต |
| `sdk.scope` | อ่านข้อมูลขอบเขตที่ใช้งานอยู่ |
| `sdk.storage` | จัดเก็บสถานะปลั๊กอินแบบคีย์/ค่าอย่างถาวร |
| `sdk.fs` | ดำเนินการกับไฟล์ในไดเรกทอรีข้อมูลส่วนตัวของปลั๊กอิน |
| `sdk.path` | เครื่องมือช่วยประกอบพาธในไดเรกทอรีข้อมูลของปลั๊กอิน |
| `sdk.api` | เปิดให้ฟรอนต์เอนด์ของปลั๊กอินเรียกตัวจัดการแบ็กเอนด์ |

## การบันทึก {#logging}

```js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")
```

ข้อความแสดงใน UI บันทึกของปลั๊กอิน เขียนบันทึกให้กระชับและหลีกเลี่ยงการเขียนข้อมูลลับ

## เมทาดาทา {#metadata}

```js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()
```

ใช้ `sdk.meta.path()` สำหรับข้อมูลเฉพาะของปลั๊กอิน อย่าคิดว่าโค้ดปลั๊กอินในแซนด์บ็อกซ์สามารถเข้าถึงพาธใดก็ได้ในระบบไฟล์

```js
sdk.storage.set("key", "value")
sdk.storage.get("key")
sdk.storage.keys()
sdk.storage.delete("key")
sdk.storage.clear()
```

```js
sdk.fs.readFile("relative/file.txt")
sdk.fs.writeFile("relative/file.txt", "text")
sdk.fs.appendFile("relative/file.txt", "more")
sdk.fs.exists("relative/file.txt")
sdk.fs.existsSync("relative/file.txt")
sdk.fs.mkdir("relative/dir")
sdk.path.join("a", "b", "c")
```

## เหตุการณ์ {#events}

```js
sdk.events.onInterceptRequest(function(req) {
  return req
})

sdk.events.onInterceptResponse(function(req, res) {
  sdk.console.log(res.getCode())
})

sdk.events.onProjectChange(function() {
  sdk.console.log("project changed")
})
```

คอลแบ็กควรทำงานอย่างรวดเร็ว ควรย้ายงานที่ใช้เวลานานไปให้เริ่มผ่านการกระทำที่ชัดเจนของผู้ใช้หรือตัวจัดการ API แบ็กเอนด์

## ตัวจัดการบริดจ์ฟรอนต์เอนด์ {#frontend-bridge-handlers}

ปลั๊กอินแบ็กเอนด์สามารถเปิดให้แผงฟรอนต์เอนด์ของปลั๊กอินเรียกตัวจัดการได้:

```js
sdk.api.register("ping", async function(input) {
  return { ok: true, input: input };
});
```

ฟรอนต์เอนด์เรียกตัวจัดการผ่าน SDK ฟรอนต์เอนด์ของ Ogma ดู [เอกสารอ้างอิง SDK ฟรอนต์เอนด์](./frontend-sdk.md)

## ข้อกำหนดด้านความปลอดภัย {#security-expectations}

* ถือว่าทราฟฟิก HTTP ประเด็นที่ตรวจพบ บันทึก และรายการส่งออกเป็นข้อมูลอ่อนไหว
* ขอเฉพาะสิทธิ์ที่ปลั๊กอินของคุณต้องการ
* อย่าบันทึกข้อมูลรับรอง คุกกี้ โทเค็น Bearer หรือทราฟฟิกส่วนตัวเป็นพฤติกรรมเริ่มต้น
* ทำให้พฤติกรรมของปลั๊กอินชัดเจนและเข้าใจได้สำหรับผู้ใช้
