Получает:
Необходимо добавить "tag": tag
с тем же уровнем Moment: {}
. Остальное аналогично GET.
То же, что и GET.
Заголовки:
Необходимо добавить "tag": tag
с тем же уровнем Moment: { }
. Остальное аналогично HEAD.
То же, что и HEAD.
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:
Можно также добавить несколько идентификаторов как id{}
.
Например: внести изменения в содержимое момента с id = 235:
{
"Moment": {
"id": 235,
"content": "APIJSON,let interfaces and documents go to hell!"
},
"tag": "Moment"
} | То же, что и POST.
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. Каждый объект в базе данных имеет уникальный адрес.
"key[]":{}
{Table:{Content}}
будет записано как {Content}
. | {"User[]":{"User":{}}}
(http://apijson.cn:8080/get/{`"User[]":{"count":3,"User":{}}`}) <br /> {"User":{"id", ...}}
<br /> {id, ...}
|
| Получить данные, соответствующие определённым условиям | "key{}":[]
[id{}:[38710,82001,70793]]
(http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"id{}":[38710,82001,70793]}}}) id IN(38710,82001,70793)
. "key{}":"condition0,condition1..."
[id<>:"<=80000,\>90000"]
(http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"id<>":"<=80000,>90000"}}}) id<=80000 OR id>90000
, "key<>":Object
=> "key<>":[Object]
[contactIdList<>:38710]
(http://apijson.cn:8080/get/{"User[]":{"count":3,"User":{"contactIdList<>":38710}}}) json_contains(contactIdList,38710)
. "key}{@":{
<br /> "Table":{ ... }
}
[id}{@:{<br /> "from":"Comment",<br /> "Comment":{<br /> "momentId":15 <br /> }<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...)
[isPraised():"isContain(praiseUserIdList,userId)"](http://apijson.cn:8080/get/{"Moment":{"id":301,"isPraised()":"isContain(praiseUserIdList,userId)"}})
"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). % означает любые символы.
В SQL это name LIKE '%m%'
, что означает получение пользователя с 'm' в имени.
Регулярное выражение.
"key~": "regular expression" => "key~":["regular expression"]
Это могут быть любые регулярные выражения. Например, ^[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).
В SQL это id>80000 AND id<=90000
, что означает id должен быть id>80000 & id<=90000
То же самое, что и "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:
② Просмотреть массивы пользователей на странице 3. Показать по 5 на каждой странице:
③ Получить массивы пользователей и подсчитать общее количество пользователей:
"[]":{
"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 Комментарий:
⑤ Добавить текущего пользователя на каждый уровень:
"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)" Ключевые слова объекта, см. вышеприведенное описание, разница в том, что глобальные ключевые слова будут автоматически вставлены в каждый объект таблицы как значение по умолчанию.
«Тег»: строка, следующий тег является идентификатором структуры JSON, соответствующей запросу в не-GET или HEAD запросах, обычно это имя запрашиваемой таблицы или массив Table[] или Table: [], соответствующий имени, определенному бэкэндом, указанным в таблице запроса.
«Версия»: целое число, версия интерфейса. Если версия не передана, null или <= 0, будет использоваться самая высокая версия. Если переданы другие допустимые значения, будет использована ближайшая к ней самая низкая версия, которая указана в бэкэнд-таблице запроса.
«Формат»: логическое значение, отформатированное для возврата ключа 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 )