1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors_Tencent-APIJSON

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Document-English.md 28 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 01.12.2024 03:46 f8567b7

Получает:

  • Получает данные с высокой степенью безопасности и конфиденциальности. Например, банковские счета, дата рождения.
  • base_url/gets/

Необходимо добавить "tag": tag с тем же уровнем Moment: {}. Остальное аналогично GET.

То же, что и GET.

Заголовки:

  • Получают количество конфиденциальных данных (например, банковский счёт).
  • base_url/heads/

Необходимо добавить "tag": tag с тем же уровнем Moment: { }. Остальное аналогично HEAD.

То же, что и HEAD.

POST:

  • Добавляет новые данные.
  • base_url/post/

{…} — это таблица, которая создаётся автоматически и не может быть задана пользователем.

Например, пользователь с id = 38710 публикует новый момент:

{
   "Moment": {
     "userId": 38710,
     "content": "APIJSON, let interfaces and documents go to hell!"
},
   "tag": "Moment"
}
|
{
   TableName: {
     …
},
   "code": 200,
   "msg": "success"
}

Пример:

{
   "Moment": {
     "code": 200,
     "msg": "success",
     "id": 120
},
   "code": 200,
   "msg": "success"
}

PUT:

  • Вносит изменения в конкретный элемент.
  • Изменяет только часть, отправленную на сервер.
  • base_url/put/

Можно также добавить несколько идентификаторов как id{}.

Например: внести изменения в содержимое момента с id = 235:

{
   "Moment": {
     "id": 235,
     "content": "APIJSON,let interfaces and documents go to hell!"
},
   "tag": "Moment"
} | То же, что и POST.

DELETE:

  • Удаляет данные.
  • base_url/delete/

Можно также добавить несколько идентификаторов как id{}.

Или удалить содержимое с несколькими идентификаторами:

{
   "Comment": {
     "id[]": [100, 110, 120]
},
   "tag": "Comment[]"
} |

{
   TableName: {
     "code": 200,
     "msg": "success",
     "count": 3
},
   "code": 200,
   "msg": "success"
}

Пример:

{
   "Comment": {
     "code": 200,
     "msg": "success",
     "id[]": [100, 110, 120],
     "count": 3
},
   "code": 200,
   "msg": "success"
} 1. Необходимы, когда методы не GET или HEAD. Тег после двоеточия — это ключ в JSON-объекте для выполнения запросов. Обычно это имя таблицы, которую вы ищете.

2. Методы GET и HEAD используются для общих запросов данных. Они поддерживают универсальную структуру JSON-объектов. Другие методы используются для запроса конфиденциальных данных, и JSON-объект запроса должен быть в той же форме/порядке, что и в базе данных. В противном случае запрос будет отклонён.

3. GETS и GET, HEADS и HEAD возвращают данные одного типа. Но форма запроса немного отличается.

4. Для HTTP все методы API (get, gets, head, heads, post, put, delete) выполняют запросы с помощью HTTP POST.

5. Все JSON-объекты здесь имеют форму {...}. Вы можете поместить в него элементы или объекты.

6. Каждый объект в базе данных имеет уникальный адрес.

  • Ключи в параметрах URL | Функции | Ключ-значение | Примеры | | --- | --- | --- | | Получить данные в массивах | "key[]":{}
    Часть после двоеточия является JSON-объектом. key является необязательным. Когда key совпадает с именем таблицы, JSON-объект будет в упрощённой форме. Например, {Table:{Content}} будет записано как {Content}. | {"User[]":{"User":{}}} (http://apijson.cn:8080/get/{`"User[]":{"count":3,"User":{}}`})
    Используется для получения данных от пользователя. Здесь ключ и имя таблицы — «User», тогда <br /> {"User":{"id", ...}}
    будет записано как <br /> {id, ...} | | Получить данные, соответствующие определённым условиям | "key{}":[]
    Часть после двоеточия представляет собой JSONArray с условиями внутри. | [id{}:[38710,82001,70793]] (http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"id{}":[38710,82001,70793]}}})
    В SQL это будет id IN(38710,82001,70793).
    Это означает получение данных с id, равными 38710, 82001, 70793. | | Получить данные со сравнительной операцией | "key{}":"condition0,condition1..."
    Условия могут быть любой операцией сравнения SQL. Используйте '', чтобы включить любые символы, отличные от цифр. | [id<>:"<=80000,\>90000"] (http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"id<>":"<=80000,>90000"}}})
    В SQL это было бы id<=80000 OR id>90000,
    что означает получить массив пользователей с id<=80000 | id>90000 | | Получить данные, содержащие элемент | "key<>":Object => "key<>":[Object]
    key должен быть JSONArray, а Object не может быть JSON. | [contactIdList<>:38710] (http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"contactIdList<>":38710}}})
    В SQL это было бы
    json_contains(contactIdList,38710).
    Это означает поиск данных пользователя, чей contactList содержит 38710. | | Проверить наличие | "key}{@":{
       "from":"Table",<br /> &nbsp;&nbsp; "Table":{ ... }
    }

    }{ означает EXISTS.
    key — тот, который вы хотите проверить.
    Здесь есть Subquery, см. спецификации ниже для получения дополнительной информации. | [id}{@:{<br /> &nbsp;&nbsp; "from":"Comment",<br /> &nbsp;&nbsp; "Comment":{<br /> &nbsp;&nbsp; &nbsp;&nbsp; "momentId":15 <br /> &nbsp;&nbsp; }<br />}](http://apijson.cn:8080/get/{"User":{"id}{@":{"from":"Comment","Comment":{"momentId":15}}}})<br /> WHERE EXISTS(SELECT * FROM Comment WHERE momentId=15) | | Включить функции в параметры | "key()":"function (key0,key1...)"
    Это вызовет бэкенд
    function(JSONObject request, String key0, String key1...)
    для получения или проверки данных.
    Используйте - и +, чтобы показать порядок приоритета: проанализировать key-() > проанализировать текущий объект > проанализировать key() > проанализировать дочерний объект > проанализировать key+() | [isPraised():"isContain(praiseUserIdList,userId)"](http://apijson.cn:8080/get/{"Moment":{"id":301,"isPraised()":"isContain(praiseUserIdList,userId)"}})
    Будет использоваться функция boolean isContain(JSONObject request, String array, String value). В этом случае клиент получит "isPraised":true (в этом случае клиент использует функцию, чтобы проверить, нажал ли пользователь кнопку «лайк» для Moment.) | | Ссылаться на значение | "key@":"key0/key1/.../refKey"
    Используйте / для отображения пути. Часть перед двоеточием — это ключ, на который нужно сослаться. Путь после двоеточия начинается с родительского уровня. Ключ.

{«Moment»: { «userId»: 38710 }, «User»: { «id@»: «/Moment/userId» }}

В этом примере значение id в User ссылается на userId в Moment, что означает User.id = Moment.userId. После отправки запроса "id@":"/Moment/userId" будет "id":38710.

Подзапрос.

{"key@": { "range": "ALL", "from": "Table", "Table": {...} }}

range может быть ALL, ANY. from означает, какую таблицу вы хотите запросить. Это очень похоже на то, как вы запрашиваете в SQL. Вы также можете использовать count, join и т. д.

{"id@": { "from": "Comment", "Comment": { "@column": "min(userId)" } }}(http://apijson.cn:8080/get/{"User":{"id@":{"from":"Comment","Comment":{"@column":"min(userId)"}}}})

WHERE id=(SELECT min(userId) FROM Comment).

Нечёткое соответствие.

"key$": "SQL search expressions" => "key$":["SQL search expressions"]

Любые выражения поиска SQL. Например, %key%(включает ключ), key%(начинается с ключа),%k%e%y%(включает k, e, y). % означает любые символы.

"name$": "%m%"

В SQL это name LIKE '%m%', что означает получение пользователя с 'm' в имени.

Регулярное выражение.

"key~": "regular expression" => "key~":["regular expression"]

Это могут быть любые регулярные выражения. Например, ^[0-9]+$, *~ не чувствителен к регистру, применим расширенный поиск.

"name~": "^[0-9]+$"

В SQL это name REGEXP '^[0-9]+', что означает поиск по регулярному выражению.

Получение данных в диапазоне.

"key%": "start,end" => "key%":["start,end"]

Тип данных start и end может быть только Boolean, Number или String. Например, "2017-01-01,2019-01-01", ["1,90000", "82001,100000"]. Используется для получения данных за определённый временной диапазон.

"date%": "2017-10-01,2018-10-01"

В SQL это date BETWEEN '2017-10-01' AND '2018-10-01', что означает получить данные пользователей, которые зарегистрировались между 2017–10–01 и 2018–10–01.

Создание псевдонима.

"name:alias"

Этот параметр изменяет имя на псевдоним в возвращаемых результатах. Он применим к столбцу, tableName, функциям SQL и т.д., но только в запросах GET, HEAD.

["@column": "toId:parentId"](http://apijson.cn:8080/get/{"Comment":{"@column": "id,toId:parentId","id":51}})

В SQL это toId AS parentId. Будет возвращён parentId вместо toId.

Добавление / расширение элемента.

"key+": Object

Тип объекта определяется key. Типы могут быть Number, String, JSONArray. Формы — 82001,"apijson",["url0","url1"] соответственно. Применяется только к запросу PUT.

"praiseUserIdList+":[82001]. В SQL это json_insert(praiseUserIdList,82001). Добавить id, который похвалил Moment.

Удаление / уменьшение элемента.

"Key-":Object

Противоположность "key+"

"balance-":100.00. В SQL это balance = balance - 100.00, что означает уменьшение баланса на 100.

Операции.

&, |, !

Они используются в логических операциях. То же, что AND, OR, NOT в SQL соответственно. По умолчанию для одного и того же ключа это операция «|» (OR) среди условий; для разных ключей по умолчанию операция среди условий — «&»(AND).

"id&{}":">80000,<=90000"

В SQL это id>80000 AND id<=90000, что означает id должен быть id>80000 & id<=90000

"id|{}":">90000,<=80000"

То же самое, что и "id{}":">90000,<=80000". В SQL это id>80000 OR id<=90000, что означает, что id должен быть id>90000 | id<=80000 "id!{}":[82001,38710]

В SQL это:

id NOT IN(82001, 38710),

что означает, что идентификатор должен быть равен одному из значений (82001 или 38710).

Ключевые слова в массиве: могут быть определены самостоятельно.

| "key":Object key — это ключевое слово {} в "[]":{}. Тип Object зависит от key.

"count":Integer используется для подсчёта количества элементов. По умолчанию наибольшее число равно 100.

"page":Integer используется для получения данных с определённой страницы, начиная с 0. По умолчанию наибольшее число также равно 100. Обычно используется вместе с COUNT.

"query":Integer получает количество элементов, соответствующих условиям.

Когда нужно получить объект, значение целого числа должно быть равно 0; когда нужно получить общее количество, оно равно 1; когда и то, и другое, равно 2. Можно получить общее количество с ключевым словом total. Оно может ссылаться на другие значения. Например:

"total@":"/[]/total"

Поместите его на тот же уровень запроса, что и query. Query и total используются в GET-запросах только для удобства. Обычно HEAD-запрос предназначен для получения чисел, таких как общее количество.

"join":"&/Table0,Table1"`:

Объединение таблиц:

«<» — LEFT JOIN,

«>» — RIGHT JOIN,

«&» — INNER JOIN,

«|» — FULL JOIN,

«!» — OUTER JOIN,

"@" — APP JOIN.

APP JOIN находится на уровне приложения. Он получит все ключи в таблицах, на которые ссылаются refKeys в результирующих таблицах, например, refKeys:[value0, value1…]. Затем, поскольку результаты получают данные в соответствии с key=$refKey несколько раз (COUNT), он использует ключ IN($refKeys) для объединения этих подсчётов в одном SQL-запросе, чтобы повысить производительность. Другие функции JOIN такие же, как в SQL.

"join":"</ViceTable",
"MainTable":{},
"ViceTable":{"key@":"/MainTable/refKey"}
вернёт
MainTable LEFT JOIN ViceTable
ON ViceTable.key=MainTable.refKey.

"otherKey":Object — ключевое слово, определённое пользователем, кроме тех, которые уже есть в системе. Также возвращается с определёнными пользователем ключевыми словами.

Пример использования:

① Получить массивы пользователей максимум по 5:

"count":5

② Просмотреть массивы пользователей на странице 3. Показать по 5 на каждой странице:

"count":5,
"page":3

③ Получить массивы пользователей и подсчитать общее количество пользователей:

"[]":{
   "query":2,
   "User":{}
},
"total@":"/[]/total"

Вопросы, связанные с общим количеством страниц или наличием следующей страницы, можно решить с помощью функций total, count, page. Общее количество страниц:

int totalPage = Math.ceil(total / count);

Если это последняя страница:

boolean hasNextPage = total > count*page;

Если это первая страница:

boolean isFirstPage = page <= 0;

Если это последняя страница:

boolean isLastPage = total <= count*page.

...

④ Момент INNER JOIN Пользователь LEFT JOIN Комментарий:

"[]":{
   "join": "&/User,</Comment",
   "Moment":{},
   "User":{
     "name~":"t",
     "id@": "/Moment/userId"
   },
   "Comment":{
     "momentId@": "/Moment/id"
   }
}

⑤ Добавить текущего пользователя на каждый уровень:

"User":{},
"[]":{
   "name@":"User/name", //self-defined keyword
   "Moment":{}
}
Таблица: {}. Тип объекта определяется @key

"@combine":"&key0,&key1,\|key2,key3,"
!key4,!key5,&key6,key7..."
Сначала данные группируются по одинаковым операторам. Внутри одной группы операции выполняются слева направо. Затем операции выполняются в порядке & | !. Разные группы связаны с помощью &. Таким образом, приведённое выше выражение будет выглядеть следующим образом:
(key0 & key1 & key6 & другой ключ) & (key2 | key3 | key7) & !(key4 | key5)
| является необязательным.

"@column":"column;function(arg)..." Возвращает определённые столбцы.

"@order":"column0+,column1-..." Определяет порядок возврата результатов:

"@group":"column0,column1..." Определяет способ группировки данных. Если @column объявил идентификатор таблицы, этот идентификатор должен быть включён в @group. В других ситуациях необходимо выполнить хотя бы одно из следующих действий:
1. Идентификатор группы объявлен в @column
2. Первичный ключ таблицы объявлен в @group.

@having":"function0(...)?value0;function1(...)?value1;function2(...)?value2..." Добавляет условия к возвращаемым результатам с помощью @having. Обычно работает с @group, он объявляется в @column.

"@schema":"sys" Может быть установлен как настройка по умолчанию.

"@database":"POSTGRESQL" Получает данные из другой базы данных. Может быть установлена как настройка по умолчанию.

"@role":"OWNER" Получает информацию о пользователе, включая
UNKNOWN,LOGIN,CONTACT,CIRCLE,OWNER,ADMIN,
Может быть установлена как настройка по умолчанию.
Можно самостоятельно определить новую роль или переписать существующую. Используйте Verifier.verify и т. д., чтобы самостоятельно определить методы проверки.

"@explain":true Профилирование. Может быть установлено как настройка по умолчанию.

"@otherKey":Object Самостоятельно определяемое ключевое слово | ① Поиск пользователей, у которых имя или тег содержит букву «а»:
"name~":"a",
"tag~":"a",
"@combine":"name~,tag~"


② Только поиск столбцов id,sex,name и возврат в том же порядке:
"@column":"id,sex,name"

③ Поиск пользователей в порядке убывания имени и в порядке по умолчанию для id:
"@order":"name-,id"

④ Поиск моментов, сгруппированных по userId:
"@group":"userId,id"

⑤ Поиск моментов, у которых id равен или меньше 100 и сгруппирован по userId:
"@column":"userId;max(id)",
"@group":"userId",
"@having":"max(id)>=100"

Также можно определить имя возвращаемой функции:
"@column":"userId;max(id):maxId",
"@group":"userId",
"@having":"(maxId)>=100"


⑥ Проверка таблицы Users в sys:
"@schema":"sys"

⑦ Проверка таблицы Users в PostgreSQL:
"@database":"POSTGRESQL"

⑧ Проверка активности текущего пользователя:
"@role":"OWNER"

⑨ Включить профилирование:
"@explain":true

⑩ Получить изображение № 0 из pictureList:
"@position":0, //самоопределяемое ключевое слово
"firstPicture()":"getFromArray(pictureList,@position)"
Ключевые слова объекта, см. вышеприведенное описание, разница в том, что глобальные ключевые слова будут автоматически вставлены в каждый объект таблицы как значение по умолчанию.

  1. «Тег»: строка, следующий тег является идентификатором структуры JSON, соответствующей запросу в не-GET или HEAD запросах, обычно это имя запрашиваемой таблицы или массив Table[] или Table: [], соответствующий имени, определенному бэкэндом, указанным в таблице запроса.

  2. «Версия»: целое число, версия интерфейса. Если версия не передана, null или <= 0, будет использоваться самая высокая версия. Если переданы другие допустимые значения, будет использована ближайшая к ней самая низкая версия, которая указана в бэкэнд-таблице запроса.

  3. «Формат»: логическое значение, отформатированное для возврата ключа JSON ответа, обычно преобразующее TableName в tableName, TableName[] в tableNameList, Table: alias в alias, TableName-key[] в tableNameKeyList и другие форматы camelcase.

| 1. Проверка личной информации:
{"tag":"Privacy","Privacy":{"id":82001}}

| 2. Используйте интерфейс версии 1 для проверки личной информации: {"version":1,"tag":"Privacy","Privacy":{"id":82001}}

| 3. Интерфейс Moments возвращает ключ JSON в формате: [{ "format":true, "[]":{ "page":0, "count":3, "Moment":{}, "User":{ "id@":"/Moment/userId" }, "Comment[]":{ "count":3, "Comment":{ "momentId@":"[]/Moment/id" } } }] (http://apijson.cn:8080/get/{"format":true,"[]":{"page":0,"count":3,"Moment":{},"User":{"id@":"%252FMoment%252FuserId"},"Comment[]":{"count":3,"Comment":{"momentId@":"[]%252FMoment%252Fid"}}})

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mirrors_Tencent-APIJSON.git
git@api.gitlife.ru:oschina-mirror/mirrors_Tencent-APIJSON.git
oschina-mirror
mirrors_Tencent-APIJSON
mirrors_Tencent-APIJSON
master