Schema Đầu vào
Scrapeless đọc tệp INPUT_SCHEMA.json
nằm trong thư mục gốc của dự án và tự động tạo một giao diện người dùng dựa trên tệp này để nhập các tham số cần thiết cho Actor. Điều này đơn giản hóa cấu hình cho các nhà phát triển và làm cho các tùy chọn đầu vào dễ tiếp cận hơn với những người không phải là nhà phát triển.
Mục đích chính:
- Xác thực Đầu vào Được sử dụng để đảm bảo rằng dữ liệu được truyền đến Actor phù hợp với cấu trúc và quy tắc xác thực đã được xác định trước, tăng cường tính ổn định và độ tin cậy trong quá trình thực thi.
- Tạo giao diện người dùng (UI) Nền tảng tự động tạo một giao diện cấu hình đồ họa dựa trên schema đầu vào, giúp người dùng dễ dàng điền và quản lý các tham số đầu vào.
- Hỗ trợ tích hợp Scrapeless có thể tự động tạo mã gọi hàm và các bộ kết nối dựa trên schema đầu vào, đơn giản hóa cách các hệ thống bên ngoài gọi và tích hợp với Actor.
Schema Đầu vào định nghĩa các tham số đầu vào cho một Actor. Đó là một đối tượng JSON bao gồm nhiều loại trường được hỗ trợ bởi nền tảng Scrapeless. Dựa trên Schema Đầu vào, Scrapeless tự động phân tích các tham số và tạo ra một giao diện người dùng tương ứng.
Dưới đây là một UI được tạo từ một Schema Đầu vào.
Định nghĩa của Schema Đầu vào như sau:
{
"title": "Google Trends Input",
"type": "object",
"required": [
"q",
"data_type"
],
"properties": {
"q": {
"title": "Search Query",
"description": "Tham số định nghĩa truy vấn hoặc các truy vấn bạn muốn tìm kiếm. Bạn có thể sử dụng bất cứ thứ gì bạn sử dụng trong tìm kiếm Google Trends thông thường. Số lượng truy vấn tối đa mỗi tìm kiếm là 5 (điều này chỉ áp dụng cho `interest_over_time` và `compared_breakdown_by_region` data_type, các loại dữ liệu khác chỉ chấp nhận 1 truy vấn mỗi tìm kiếm).",
"type": "string",
"default": "Mercedes-Benz,BMW X5"
},
"data_type": {
"title": "Data Type",
"description": "Các loại được hỗ trợ là: `autocomplete`,`interest_over_time`,`compared_breakdown_by_region`,`interest_by_subregion`,`related_queries`,`related_topics`.",
"type": "string",
"default": "interest_over_time",
"enum": [
{
"label": "Auto complete",
"value": "autocomplete"
},
{
"label": "Interest over time",
"value": "interest_over_time"
},
{
"label": "Compared breakdown by region",
"value": "compared_breakdown_by_region"
},
{
"label": "Interest by region",
"value": "interest_by_subregion"
},
{
"label": "Related queries",
"value": "related_queries"
},
{
"label": "Related topics",
"value": "related_topics"
}
]
},
"date": {
"title": "Date",
"description": "Các ngày được hỗ trợ là: `now 1-H`, `now 4-H`, `now 1-d`, `now 7-d`, `today 1-m`, `today 3-m`, `today 12-m`, `today 5-y`, `all`.\n\nBạn cũng có thể truyền các giá trị tùy chỉnh:\n\nNgày từ năm 2004 đến nay: `yyyy-mm-dd yyyy-mm-dd` (ví dụ: `2021-10-15 2022-05-25`)\nNgày có giờ trong phạm vi một tuần: `yyyy-mm-ddThh yyyy-mm-ddThh` (ví dụ: `2022-05-19T10 2022-05-24T22`). Giờ sẽ được tính toán tùy thuộc vào tham số tz (múi giờ).",
"type": "string",
"default": "today 1-m"
},
"hl": {
"title": "Language",
"description": "Tham số định nghĩa ngôn ngữ cần sử dụng cho tìm kiếm Google Trends. Đó là mã ngôn ngữ gồm hai chữ cái. (ví dụ: `en` cho tiếng Anh, `es` cho tiếng Tây Ban Nha hoặc `fr` cho tiếng Pháp).",
"type": "string",
"default": "en"
},
"tz": {
"title": "Time Zone",
"description": "múi giờ lệch. mặc định là `420`.",
"type": "string",
"default": "420"
}
// ...
}
}
Dữ liệu đối tượng đầu vào được truyền trong giao diện UI như sau:
{
"q": "Mercedes-Benz,BMW X5",
"data_type": "interest_over_time",
"date": "today 1-m",
"hl": "en",
"tz": "420",
"geo": "",
"cat": "",
"property": "",
"is_return_raw_html": "1"
}
Tiếp theo, chúng ta hãy tìm hiểu thêm về các thông số kỹ thuật liên quan của Schema Đầu vào.
Thông số kỹ thuật
Cấu trúc
{
"title": "Title",
"type": "object",
"required": [], // Các trường bắt buộc
"properties": {} // Định nghĩa các trường đầu vào ở đây
}
Thuộc tính | Kiểu dữ liệu | Bắt buộc | Mô tả |
---|---|---|---|
title | String | Có | Bất kỳ văn bản nào để mô tả schema đầu vào của bạn. |
type | String | Có | Đây là giá trị cố định, luôn là “object”. |
required | Sring | Có | Một mảng các chuỗi, mỗi chuỗi là tên của một thuộc tính bắt buộc. |
properties | String | Có | Một đối tượng, các khóa là tên của các thuộc tính, các giá trị là định nghĩa thuộc tính. |
Các trường
Mỗi trường được nhập cần được định nghĩa dưới dạng thuộc tính. Các trường có thể có kiểu số nguyên, chuỗi, mảng, boolean, đối tượng và các kiểu khác. Chi tiết như sau:
Thuộc tính | Giá trị | Bắt buộc | Mô tả |
---|---|---|---|
type | Một trong các giá trị integer , string , array , boolean , object | Có | Ràng buộc kiểu dữ liệu trường không thể được trộn lẫn. |
title | String | Có | Tiêu đề trường |
description | String | Có | Mô tả trường được hiển thị dưới dạng văn bản trợ giúp trong UI. Bạn có thể sử dụng định dạng Markdown để viết các mô tả này. |
default | Phù hợp với type | Không | Giá trị mặc định của trường |
unit | String | Không | Đơn vị hiển thị trường |
minimum | Number | Không | Giá trị tối thiểu của trường |
maximum | Number | Không | Giá trị tối đa của trường |
enum | Array | Không | Các giá trị liệt kê của trường (tùy chọn enum) |
Ví dụ hiển thị
Chuỗi
Ví dụ đầu vào: Chúng ta đã định nghĩa một trường đầu vào tiêu chuẩn với các thuộc tính sau: kiểu là string
, tiêu đề là Username
, mô tả là Username là tên người dùng
, giá trị mặc định là Tôi là một giá trị mặc định
, và độ dài tối đa là 20
.
{
"title": "Test Input",
"type": "object",
"required": [
"username"
],
"properties": {
"username": {
"title": "Username",
"description": "Username là tên người dùng",
"type": "string",
"default": "Tôi là một giá trị mặc định",
"maximum": 20
}
}
}
Kết quả hiển thị:
Ví dụ lựa chọn quốc gia:
Trong ví dụ này, chúng ta định nghĩa một trường đầu vào lựa chọn quốc gia. Kiểu của nó là string
, giá trị mặc định là china
, và một liệt kê các giá trị có thể có được cung cấp.
{
"title": "Test Input Select",
"type": "object",
"required": [
"country"
],
"properties": {
"country": {
"title": "Country",
"type": "string",
"description": "Lựa chọn quốc gia",
"default": "china",
"enum": [
{
"label": "China",
"value": "china"
},
{
"label": "United States",
"value": "usa"
},
{
"label": "United Kingdom",
"value": "uk"
}
]
}
}
}
Kết quả hiển thị:
Số nguyên
Ví dụ:
Trong schema dưới đây, kiểu đầu vào bị ràng buộc thành integer
, với cả giá trị tối đa và tối thiểu được định nghĩa.
{
"title": "Test Input Number",
"type": "object",
"required": [
"age"
],
"properties": {
"age": {
"title": "Age",
"type": "integer",
"description": "Age là tuổi của người dùng",
"default": 18,
"minimum": 12,
"maximum": 100
}
}
}
Kết quả hiển thị:
Boolean
Ví dụ:
Trong ví dụ dưới đây, kiểu đầu vào bị ràng buộc thành boolean
, và giá trị mặc định của nó được đặt thành true
.
{
"title": "Test Input Boolean",
"type": "boolean",
"required": [
"print_log"
],
"properties": {
"print_log": {
"title": "Print Log",
"type": "boolean",
"description": "Print Log là nhật ký in của người dùng",
"default": true
}
}
}
Kết quả hiển thị:
Mảng
Ví dụ:
Trong ví dụ dưới đây, kiểu đầu vào bị ràng buộc thành array
, và một giá trị mặc định được cung cấp.
{
"title": "Test Input Array",
"type": "array",
"required": [
"user_tags"
],
"properties": {
"user_tags": {
"title": "User Tags",
"type": "array",
"description": "User Tags là các thẻ của người dùng",
"default": [
"user",
"admin"
]
}
}
}
Kết quả hiển thị:
Đối tượng
Ví dụ:
Trong ví dụ dưới đây, kiểu đầu vào bị ràng buộc thành object
, và một giá trị mặc định được cung cấp.
{
"title": "Test Input Object",
"type": "object",
"required": [
"user_info"
],
"properties": {
"user_info": {
"title": "User Info",
"type": "object",
"description": "User Info là thông tin của người dùng",
"default": {
"name": "John Doe",
"age": 20,
"email": "john.doe@example.com"
}
}
}
}
Kết quả hiển thị: