Json Rest Server 是一个基于 JSON 的 RESTful 服务器

语言

Portuguese English

Json Rest Server

一个基于 JSON 的 RESTful 服务器

拥有一个功能齐全的 100% RESTful 服务器,包含身份验证、分页以及开发应用程序所需的所有服务。

安装

  1. 安装 Dart (https://dart.ac.cn/get-dart )。请注意,如果您已安装 Flutter,则无需安装 Dart。

  2. 通过 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,但您也可以使用 jsonRestServerjrs 来简化输入?

更新:

更新 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"},
);

GitHub

查看 Github