Hướng dẫn does mysql support rest api? - mysql có hỗ trợ api phần còn lại không?

Hướng dẫn này thiết lập API ROUTER REST cơ bản, thêm xác thực cơ bản và hiển thị tuyến đường để kiểm tra trạng thái của bộ định tuyến. API REST được cấu hình bằng các phần cấu hình và tùy chọn được yêu cầu để bật và sử dụng API REST. Ví dụ: đây là tệp cấu hình bộ định tuyến MySQL tối thiểu cho phép chức năng API REST cơ bản nhất:

[DEFAULT]
logging_folder=

# Exposes http://127.0.0.1:8081
[http_server]

# Exposes /api/20190715/swagger.json
[rest_api]

Một tệp cấu hình bộ định tuyến điển hình chứa các tùy chọn khác nhưng hướng dẫn này tập trung vào API REST. Lưu tệp này (hướng dẫn của chúng tôi giả sử (/foo/mysqlrouter.conf), bộ định tuyến bắt đầu tải tệp này (chẳng hạn như mysqlrouter -c /foo/mysqlrouter.conf và xác nhận rằng http://127.0.0.1:8081/api/20190715/swagger.json tồn tại. Ví dụ swagger.json nội dung:mysqlrouter -c /foo/mysqlrouter.conf, and confirm that http://127.0.0.1:8081/api/20190715/swagger.json exists. Example swagger.json content:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}

Điều này chứng tỏ rằng plugin API ROUTER REST được tải và các plugin bổ sung hiển thị các tuyến đường và đường dẫn không được bật. Xác thực không bắt buộc để truy xuất swagger.json.

Ghi chú

Số phiên bản API có thể thay đổi trong bản phát hành trong tương lai; và các bản phát hành trong tương lai có thể bao gồm chức năng để truy xuất số nguyên API này.

Tiếp theo, chúng ta hãy bật plugin

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
0 đơn giản để hiển thị đường dẫn bộ định tuyến/trạng thái. Xác thực là bắt buộc và cho phép xác thực yêu cầu các tùy chọn cấu hình bổ sung. Ví dụ:router/status path. Authentication is required, and enabling authentication requires additional configuration options. For example:

[DEFAULT]
logging_folder=

# Exposes http://127.0.0.1:8081
[http_server]

# Exposes /api/20190715/swagger.json
[rest_api]

# Exposes /api/20190715/router/status
[rest_router]
require_realm=somerealm

# Exposes /api/20190715/routes/*
#[rest_routing]
#require_realm=somerealm

# Exposes /api/20190715/metadata/*
#[rest_metadata_cache]
#require_realm=somerealm

# Define our realm
[http_auth_realm:somerealm]
backend=somebackend
method=basic
name=Some Realm

# Define our backend; this file must exist and validate
[http_auth_backend:somebackend]
backend=file
filename=/etc/mysqlrouter/mysqlrouter.pwd

Bộ định tuyến sử dụng các lĩnh vực để xác thực và tiện ích dòng lệnh mysqlrouter_passwd tạo ra và quản lý những người dùng này. Ví dụ: điều này tạo ra một người dùng có tên Somouser và lưu nó dưới dạng tệp mới có tên

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
1:mysqlrouter_passwd command-line utility generates and manages these users. For example, this creates a user named someuser and saves it as a new file named
{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
1:

# Generate and save the user/pass
$> mysqlrouter_passwd set /etc/mysqlrouter/mysqlrouter.pwd someuser
Please enter password:

# Optionally list usernames and salted passwords in the file:
$> mysqlrouter_passwd list /etc/mysqlrouter/mysqlrouter.pwd

someuser:$5$43tfYEwobPBLkYDB$XnHyC0uXY1F4f6ryd8Vj5CUnEqcH3tqf4pud9kqIji3

Khởi động lại bộ định tuyến với tệp cấu hình mới của chúng tôi tạo ra một swagger.json khác mà hiện chứa thông tin plugin [rest_router] cho tuyến đường /bộ định tuyến /trạng thái của nó:/router/status route:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [
    {
      "name": "app",
      "description": "Application"
    }
  ],
  "paths": {
    "/router/status": {
      "get": {
        "tags": [
          "app"
        ],
        "description": "Get status of the application",
        "responses": {
          "200": {
            "description": "status of application",
            "schema": {
              "$ref": "#/definitions/RouterStatus"
            }
          }
        }
      }
    }
  },
  "definitions": {
    "RouterStatus": {
      "type": "object",
      "properties": {
        "timeStarted": {
          "type": "string",
          "format": "data-time"
        },
        "processId": {
          "type": "integer"
        },
        "version": {
          "type": "string"
        },
        "hostname": {
          "type": "string"
        },
        "productEdition": {
          "type": "string"
        }
      }
    }
  }
}

Tải http://127.0.0.1:8081/api/20190715/router/status nhắc tên người dùng và mật khẩu (mà chúng tôi đã tạo trong ví dụ của chúng tôi) và trên thành công trả về trạng thái hiện tại của bộ định tuyến. Ví dụ:http://127.0.0.1:8081/api/20190715/router/status prompts for a username and password (that we created in our example) and on success returns Router's current status. For example:

{
  "processId": 1883,
  "productEdition": "MySQL Community - GPL",
  "timeStarted": "2022-01-25T21:23:50.442399Z",
  "version": "8.0.31",
  "hostname": "boat"
}

Chúng tôi thiết lập API ROUTER REST cơ bản với một phụ trợ được xác thực; API REST với hai plugin API REST được bật.

Một nguyên mẫu của MySQL 5.7 đang vận chuyển với một thành phần tùy chọn được gọi là plugin HTTP MySQL. Plugin này cho phép truy cập trực tiếp vào MySQL thông qua phần còn lại qua giao diện HTTP, loại bỏ nhu cầu về máy chủ trung gian hoặc trình điều khiển cụ thể cơ sở dữ liệu.

SQL trên HTTP

Trên thực tế, có ba giao diện có sẵn thông qua plugin này. Cái đầu tiên họ nói về tài liệu là điểm cuối của SQL SQL. Điểm cuối chấp nhận và thực thi các câu lệnh SQL được truyền qua URL. Ví dụ

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
3
{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
4
{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
4

Kết quả trở lại dưới dạng tài liệu JSON. Trong phần Meta Meta, bạn sẽ nhận được thông tin về mỗi cột trong tập kết quả. Sau đó, có phần dữ liệu của người Viking, là một mảng các hàng. Mỗi hàng ở dạng một mảng các trường. Để tiết kiệm băng thông và chi phí phân tích cú pháp, các trường này không được đặt tên. Thay vào đó, bạn phải suy ra tên của các trường từ vị trí trong mảng.

Crud trên http

Điểm cuối của Crud Crud là những gì chúng ta thường nghĩ là nghỉ ngơi. Đối với tất cả các hoạt động, bạn phải cung cấp khóa chính trong URL của yêu cầu. Điều này có nghĩa là bạn có thể dựa vào khóa chính Auto_increment khi chèn các hàng mới.

Với một yêu cầu đặt, được sử dụng để chèn/cập nhật, bạn phải cung cấp một đối tượng JSON truyền thống làm phần thân của thông điệp. Tương tự như vậy, khi bạn sử dụng, hãy đọc một bản ghi, bạn sẽ chỉ nhận được một đối tượng JSON truyền thống mà không có bất kỳ siêu dữ liệu nào. Về lý thuyết, điều này làm giảm kích thước của thông điệp, nhưng trong thực tế, nó có thể sẽ phù hợp với một gói TCP duy nhất.

Mẫu URL là:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
5

Tài liệu JSON trên HTTP

Các giao diện SQL và CRUD vẫn dựa trên các bảng quan hệ. Điều đó có nghĩa là, có một lược đồ được xác định rõ về các hàng và cột. Nếu bạn cần lưu trữ không có cấu trúc, giao diện tài liệu JSON JSON dành cho bạn.

Giao diện này dựa trên các bảng giá trị khóa đơn giản. Dữ liệu JSON được lưu trữ trong cột Blob, loại bỏ sự cần thiết phải ánh xạ giữa các loại dữ liệu JSON và MySQL. Các bảng, được quản lý bởi MySQL, có thể được tạo bằng cách gửi tin nhắn đặt vào URL bằng cách sử dụng mẫu này:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
6

Các bảng tài liệu luôn sử dụng varchar (36) cho cột chính. Điều này cho phép mẫu này cho các hoạt động CRUD:

{
  "swagger": "2.0",
  "info": {
    "title": "MySQL Router",
    "description": "API of MySQL Router",
    "version": "20190715"
  },
  "basePath": "/api/20190715",
  "tags": [],
  "paths": {},
  "definitions": {}
}
7

MySQL có thể kết nối với API không?

API cung cấp quyền truy cập cấp thấp vào tài nguyên MySQL bằng giao thức MYSQL cổ điển hoặc giao thức X. Cả hai đầu nối và API đều cho phép bạn kết nối và thực hiện các câu lệnh MySQL từ một ngôn ngữ hoặc môi trường khác, bao gồm ODBC, Java (JDBC), C ++, Python, Node. JS, PHP, Perl, Ruby và C.Both Connectors and the APIs enable you to connect and execute MySQL statements from another language or environment, including ODBC, Java (JDBC), C++, Python, Node. js, PHP, Perl, Ruby, and C.

API REST có hỗ trợ SQL không?

Các API còn lại là các điểm cuối dịch vụ hỗ trợ một tập hợp các hoạt động HTTP (Phương thức), cung cấp tạo, truy xuất, cập nhật hoặc xóa quyền truy cập cho tài nguyên trong máy chủ báo cáo.API REST cung cấp quyền truy cập theo chương trình vào các đối tượng trong danh mục máy chủ báo cáo dịch vụ báo cáo SQL Server 2017.The REST API provides programmatic access to the objects in a SQL Server 2017 Reporting Services report server catalog.

REST API có sử dụng cơ sở dữ liệu không?

Phần còn lại có nghĩa là chuyển trạng thái đại diện và đó là một kiến trúc được sử dụng để thiết kế các ứng dụng máy khách-máy khách.Với API REST, bạn đang nhận được một đại diện cho dữ liệu được yêu cầu được lưu trữ trong cơ sở dữ liệu.With a Rest API, you're getting a representation of the requested data stored in a database.

Chúng ta có thể viết API REST trong PHP không?

REST API cung cấp các điểm cuối (URL) mà bạn gọi để thực hiện các hoạt động CRUD với cơ sở dữ liệu của bạn trên máy chủ.Trước đây, chúng tôi đã nói về cách xây dựng API REST trong nút.JS và bình.Hôm nay, chúng tôi sẽ học cách thiết lập máy chủ PHP và viết API REST nhỏ bằng cách sử dụng nó.we will learn how to set up a PHP server and write a small REST API using it.