Сервер JSON API и статических файлов на Rust
Точно такой же, как json-server от typicode (Node.js)
Получите полноценный фейковый REST API без какого-либо кодирования за менее чем 30 секунд (серьезно)
Создано с <3 для фронтенд-разработчиков, которым нужен быстрый бэкенд для прототипирования и мокинга.
Установите JServer
cargo build --release
cp target/release/jserver /usr/bin/
Создайте файл data.json
с некоторыми данными
{
"posts": [
{ "id": 1, "title": "jserver", "author": "jupiter.gao" }
],
"comments": [
{ "id": 1, "body": "some comment" }
],
"profile": { "name": "jupiter" },
"homepage": "https://apicenter.com.cn"
}
Запустите JServer
jserver
Теперь, если вы перейдете по адресу http://localhost:2901/api/posts/1, вы получите
{ "id": 1, "title": "jserver", "author": "jupiter.gao" }
Также при выполнении запросов полезно знать следующее:
data.json
.{"name": "Foobar"}
"test string"
83.01
)id
в теле вашего PUT или PATCH запроса будет игнорироваться. Только значение, установленное в POST запросе, будет учтено, но только если оно еще не занято.Content-Type: application/json
, чтобы использовать JSON в теле запроса. В противном случае будет возвращен статус-код 400.## МаршрутыНа основе предыдущего файла data.json
, вот все стандартные маршруты.
GET /api/posts
GET /api/posts/1
POST /api/posts
PUT /api/posts/1
PATCH /api/posts/1
DELETE /api/posts/1
GET /api/profile
POST /api/profile
PUT /api/profile
PATCH /api/profile
GET /api/posts?title=jserver
GET /api/posts?id=1
Для чисел используйте следующие суффиксы: _lt
, _lte
, _gt
, _gte
для <
, <=
, >
, >=
соответственно.
Для строк используйте _like
для содержит
и _nlike
для не содержит
.
Для массивов используйте _contains
для содержит
и _ncontains
для не содержит
.
Для чисел, строк, булевых значений используйте _ne
для !=
.
Для полей используйте _exists
для не равно null
и _nexists
для равно null
.
GET /api/posts?title_like=server
GET /api/posts?id_gt=1&id_lt=3&title_exists=true
Используйте необязательные параметры _page
и необязательные параметры _size
для пагинации возвращаемых данных.
GET /api/posts?_page=7
GET /api/posts?_page=7&_size=20
GET /api/posts?_size=100
По умолчанию возвращается 20 элементов, страницы начинаются с 1 (0 рассматривается как 1)
Добавьте _sort
и _order
(по умолчанию сортировка по возрастанию)
GET /api/posts?_sort=views&_order=asc
Для сортировки по нескольким полям используйте следующий формат:
GET /api/posts?_sort=user,views&_order=desc,asc
Добавьте _start
и (_end
или _limit
)
GET /api/posts?_start=20&_end=30
GET /api/posts?_start=20&_limit=10
```В ответе массива включается заголовок `X-Total-Count`
### База данных
GET /db
### Загрузка файлов
Вы можете загружать файлы на сервер и получать к ним доступ через статический файловый сервер ниже.
POST /upload
Тело запроса должно быть в формате `multipart/form-data`, а имя поля файла должно быть `file`.
Тело ответа будет массивом JSON, где каждый элемент будет иметь свойства `name`, `path` и `size`.
### Статический файловый сервер
Вы можете использовать JSON Server для обслуживания ваших HTML, JS и CSS, просто создайте директорию `./public`
или используйте `--public-path` для установки другой директории статических файлов.
```bash
mkdir public
echo 'hello world' > public/index.html
jserver
jserver --public-path ./some-other-dir
Usage: jserver [OPTIONS]
Options:
-b, --bind-address <BIND_ADDRESS> [default: 0.0.0.0:2901]
-d, --db-path <DB_PATH> [default: ./data.json]
-p, --public-path <PUBLIC_PATH> [default: ./public]
-i, --id <ID> [default: id]
-m, --max-body-limit-m <MAX_BODY_LIMIT_M> [default: 100]
--debug
-h, --help Вывести справку
-V, --version Вывести версию
Apache License 2.0
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )