Json Rest Server 是一个基于 JSON 的 RESTful 服务器
Json Rest Server
一个基于 JSON 的 RESTful 服务器
拥有一个功能齐全的 100% RESTful 服务器,包含身份验证、分页以及开发应用程序所需的所有服务。
安装
-
安装 Dart (https://dart.ac.cn/get-dart )。请注意,如果您已安装 Flutter,则无需安装 Dart。
-
通过 pub 激活 Json Rest Server
dart pub global activate json_rest_server
配置
服务器的配置在 config.yaml 文件中。
参数说明如下:
name -> Nome do seu servidor
port -> porta de acesso
host -> Ip de acesso, caso queira que responda por ip e localhost coloque 0.0.0.0
database -> nome do arquivo do seu banco de dados
命令
注意:项目的默认可执行文件是 json_rest_server,但您也可以使用 jsonRestServer 或 jrs 来简化输入?
更新:
更新 Json Rest Server 版本
json_rest_server upgrade
创建项目
以下命令将创建运行服务器所需的所有配置。
在空文件夹中执行命令
json_rest_server create
如果您希望 Json Rest Server 创建文件夹,请执行
json_rest_server create ./nome_pasta
启动服务器
以下命令将根据 config.yaml 文件中的配置运行服务器。
进入您执行 create 命令的文件夹并执行
json_rest_server run
路由
当我们运行 Json Rest Server 时,将根据 RESTful 概念和 database.json 文件创建路由。
此文件中创建的每个键都将具有完整的路由,例如:
{
"products": [
{
"id": 0,
"title": "Academia do flutter"
},
{
"id": 1,
"title": "Jornada Dart"
},
{
"id": 2,
"title": "Jornada GetX"
}
]
}
我们将拥有路由::
GET /products -> Recuperar todos os produtos
GET /products?title=jornada -> Recuperar todos os produtos com filtro
GET /products?page=1&limit=10 -> Recuperar todos os produtos paginado
GET /products?page=1&limit=10&title=Jornada -> Recuperar todos os produtos paginado com filtro
GET /products/1 -> Recuperar 1 produto
POST /products -> Adicionar um produto
PUT /products/1 -> Editar um produto
PATCH /products/1 -> Editar um produto
DELETE /products/1 -> Deletar um produto
注意:请记住,post、put 和 patch 方法必须包含 JSON 请求体。
在 examples 文件夹中有一个 postman 文件,其中包含以上所有示例。
身份验证
Json Rest Server 已内置通过 JWT 进行身份验证的所有流程。
要启用它,您需要在 config.yaml 文件中添加 auth 属性,例如:
auth:
jwtSecret: cwsMXDtuP447WZQ63nM4dWZ3RppyMl
jwtExpire: 3600
unauthorizedStatusCode: 403
urlSkip:
- path_sem_autenticacao:
method: metodo http (post,get,put,patch ou delete)
标签说明
jwtSecret -> Chave de autenticação do jwt (essa chave é importante para validação do token)
jwtExpire -> Tempo de expiração do token
unauthorizedStatusCode -> Status de retorno para acesso negado
urlSkip -> Coloque aqui as urls e métodos http que você não que seja verificada a autenticação do usuário (paths não autenticados)
示例
在下面的示例中,不会对 POST 方法的 /users 路径(新用户注册)进行身份验证检查。
现在,第二个路径 /products/{*},您可能觉得这个 {*} 参数很奇怪,但它是一个访问通配符,因为 database.json 文件中配置的所有路径都响应按 ID 搜索数据,在 URL 中,例如:/producs/1,我们需要忽略 ID 来识别 URL,因此我们创建了通配符 {*},使 URL 的这部分动态化,允许在无需身份验证的情况下访问像 /products/1 这样的 URL。
auth:
jwtSecret: cwsMXDtuP447WZQ63nM4dWZ3RppyMl
jwtExpire: 3600
unauthorizedStatusCode: 403
urlSkip:
- /users:
method: post
- /products/{*}:
method: get
如何登录
要登录,您需要向以下 URL 发送一个 POST 请求,例如:https://:8080/auth,并附带请求体:
{
"email": "[email protected]",
"password": "123"
}
Json Rest Server 将在 database.json 文件中注册的用户表中进行搜索,如果一切正常,将返回一个包含访问令牌的 JSON。
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE5NzIzNDMyNTYsImlhdCI6MTY2MTMwMzI1NiwiaXNzIjoianNvbl9yZXN0X3NlcnZlciIsIm5iZiI6MTY2MTMwMzI1Niwic3ViIjoiMyJ9.VVZ_FsW9qXEbR6ktREzVdZ2p9Qw-slXL4EI4CSHHR9o",
"type": "Bearer"
}
现在,要访问您的身份验证路由,只需发送 Authorization 标头,其中包含与类型连接的令牌,例如:
Response response = await http.get(
'https://:8080/products',
headers: {'authorization': "$type $token"},
);