visiosoft/connect-module 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

visiosoft/connect-module

最新稳定版本:2.0.4

Composer 安装命令:

composer require visiosoft/connect-module

包简介

Securely expose Streams data to an extensible public API.

README 文档

README

The Connect Module makes it quick and easy to access your application and Streams data via a secure public API.

Commands

php artisan passport:install

php artisan passport:client --password

chmod 600 storage/streams/default/oauth-*

#API Routes

This section will go over everything you need to know about API routes.

/api/entries/{namespace}/{stream}

The entries endpoint exposes Stream entries specified by the namespace and stream parameters.

Parameters

Key Required Type Example Description
namespace true string pages The namespace of the Stream you want to access entries for.
stream true string pages The slug of the Stream you want to access entries for within the provided namespace.
/api/entries/{namespace}/{stream}/{id}

The entries endpoint also exposes single Stream entries specified by the namespace, stream, and id parameters.

Parameters

Key Required Type Example Description
namespace true string pages The namespace of the Stream you want to access entries for.
stream true string pages The slug of the Stream you want to access entries for within the provided namespace.
id true integer 10 The ID of the entry you want to access within the provided namespace and stream

Example Authentication

Request:
    var myHeaders = new Headers();
    myHeaders.append("Content-Type", "application/x-www-form-urlencoded");
    
    var urlencoded = new URLSearchParams();
    urlencoded.append("grant_type", "password");
    urlencoded.append("client_id", "******");
    urlencoded.append("client_secret", "**********************************");
    urlencoded.append("username", "admin@example.com");
    urlencoded.append("password", "admin123");
    
    var requestOptions = {
     method: 'POST',
     headers: myHeaders,
     body: urlencoded,
     redirect: 'follow'
    };
    
    fetch("https://your-site/oauth/token", requestOptions)
     .then(response => response.text())
     .then(result => console.log(result))
      .catch(error => console.log('error', error));
Response:
    {
       "token_type": "Bearer",
       "expires_in": 31536000,
       "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJhdWQiOiIzIiwianRpIjoiODAwMjZiMTUwMDU0MWFhMTI2MWY4MmI1ZWM5MDI5NTdiZTAyNjg4ZDc1MjAxYWQ3OWM1ZmQwODFiMjdjYjIyYzE2ZTI1ZjJiMmNkYzk2Y2EiLCJpYXQiOjE2MjI3OTY2NDMuMjUyMjQ0LCJuYmYiOjE2MjI3OTY2NDMuMjUyMjQ3LCJleHAiOjE2NTQzMzI2NDMuMjIzMjcyLCJzdWIiOiIxIiwic2NvcGVzIjpbXX0.HiruzlEaSeGNcTzuC8pdoE3pYpWI5HLY4Y7AhbzQES90LS79YdlIRF_Lly0vD3NIX4KrlD-7YwrYEThT2WkWhdVpm090zaqmZodcqoJvsnqMvOLfhPyWrkoCGd7aGATvA40bpehnBkA-vmKnBNYMEZoNv59As43DM6szy-_0f-oFhX0aDV6PT2M0LaT4hjfBsYXr82aZmSZeauGHCrrW9fnjD6jUkqbkRhp4bdpaTbKjzmcnAfIGCRM6BoODR06J9u6LFz9Q-ARJBEbT_ziS7W1wpkEKLAICYZLKpwsrU8iSJunb0swODB2mRUyrw4VaOQaI5NBpOyg4ugEsUJvf3m1xMJZ7PncV2ABjKsKN-3ScababoUSzR-btWxESaNae3OJAEYsn9aJHXqvWgdgmTVEHNobNt7ugYcnRW-DR8wAcK1Lf3lAmnGY8loyjPz5RmW5Q8L--qDDjY-zVtCWHph82SNZ_E0VsWYXVvuPm0xf5IgluuUEeaNDqVOzyQfehj7N4yJ8rcZ3CGcvZ4Mmz0TmXBnSB4fWAhOuzd875NSZzyS2NWWn9wEf-TQHIdQVFKexfnzO-BemnxIxElVcs4vYRnQYbCKwGxirzb1DcaXUY4rP3s-Vl0mJO_Jx3jm17XLVgsOhgquXJbFG7bloV08ldKaeFBwHLJdcFoChgtFM",
       "refresh_token": "def50200ab26d4d931dd76c2082f3814fe58e618a5e35727ab8e516fd484d89d01696e65b3af32e1a8b9580b229abf7036945d65b050b7e72d626eb600f0bf777f554f0b40d254f5156d474bd26e38ec45c7d7ca279d74b3dcee9933db9a17e06ead14e7bc77e58339a7ed7a92c10a4eea46d5626cc4483f22e8fc0bc694aae8142eef8d4ebba16eb1d14e8cfe5a7fee8a65ca41ffde618f6871af2dd08e24e76bda6e0f7ea1498cdad28b1ee8c33e72319ec6c4a3d5c412774eca5154de6f02c6c0c3ba160b387d6bbfa0c7b24f317d181d8a35c3ed321f35a788afb3da33a20850dffdbe7d3844677a50feab7c82c1e7c7fbd01c80d6bc62de0d881168807ab392cf70588ef4365adac73a63f12757a738cda29b2ccee964cbab7ac0613090c7d9571d916221fe11513ac54583843159f69476b9f7c9b906364a938ffd37df49b8cead153090d18367850dffbf156fac2ef6a91848480dbe6d4158d9d83034fb"
    }

Example Create

Request
    var myHeaders = new Headers();
    
    /**
    * Copy and Paste Authentication Response "access_token" for Authorization
    */
    
    myHeaders.append("Authorization", "Bearer PASTE_HERE_ACCESS_TOKEN");
    myHeaders.append("Content-Type", "application/json");
    
    var raw = JSON.stringify({
       "en": {"name": "TEST EN Title"}, // Translatable Field
       "tr": {"name": "TEST TR Title"}, // Translatable Field
       "slug":"test"
    });
    
    var requestOptions = {
       method: 'POST', // It is used for the POST method creation function.
       headers: myHeaders,
       body: raw,
       redirect: 'follow'
    };
    
    /**
    * addon_slug : advs, cats, posts, ...
    * stream_slug : "advs" for Advs Module, "category" for Cats Module, "categories" for Posts Module, ...
    */
    
    /**
    * Example
    * addon_slug : “posts”,
    * stream_slug : “categories”
    */
    
    fetch("https://your-site/api/entries/addon_slug/stream_slug", requestOptions)
       .then(response => response.text())
       .then(result => console.log(result))
       .catch(error => console.log('error', error));
Response
    {
       "updated_by_id": null,
       "created_by_id": null,
       "sort_order": 2,
       "slug": "test",
       "updated_at": "2021-06-14T08:32:48.000000Z",
       "created_at": "2021-06-14T08:32:48.000000Z",
       "id": 2,
       "name": "TEST EN Title",
       "description": null,
       "meta_title": null,
       "meta_description": null
    }

Example Update

Request
    var myHeaders = new Headers();
    
    /**
    * Copy and Paste Authentication Response "access_token" for Authorization
    */
    
    myHeaders.append("Authorization", "Bearer PASTE_HERE_ACCESS_TOKEN");
    myHeaders.append("Content-Type", "application/json");
    
    var raw = JSON.stringify({
       "en": {"name": "TEST EN New Title"}, // Translatable Field
       "tr": {"name": "TEST TR New Title"}, // Translatable Field
       "slug":"test_updated"
    });
    
    var requestOptions = {
       method: 'PUT', // It is used for the PUT method update function.
       headers: myHeaders,
       body: raw,
       redirect: 'follow'
    };
    
    /**
    * addon_slug : advs, cats, posts, ...
    * stream_slug : "advs" for Advs Module, "category" for Cats Module, "categories" for Posts Module, …
    * entry_id : Represents the ID (primary_id) found in the database
    */
    
    /**
    * Example
    * addon_slug : “posts”,
    * stream_slug : “categories”,
    * entry_id : “1”
    */
    
    
    fetch("https://your-site/api/entries/addon_slug/stream_slug/entry_id", requestOptions)
       .then(response => response.text())
       .then(result => console.log(result))
       .catch(error => console.log('error', error));
Response
    true

Example Delete

Request
    var myHeaders = new Headers();
    
    /**
    * Copy and Paste Authentication Response "access_token" for Authorization
    */
    
    myHeaders.append("Authorization", "Bearer PASTE_HERE_ACCESS_TOKEN");
    myHeaders.append("Content-Type", "application/json");
    
    var requestOptions = {
       method: 'DELETE', // It is used for the DELETE method delete function.
       headers: myHeaders,
       redirect: 'follow'
    };
    
    /**
    * addon_slug : advs, cats, posts, ...
    * stream_slug : "advs" for Advs Module, "category" for Cats Module, "categries" for Posts, ...
    */
    
    
    /**
    * Example
    * addon_slug : “posts”,
    * stream_slug : “categories”,
    * entry_id : “1”
    */
    
    fetch("https://your-site/api/entries/addon_slug/stream_slug/entry_id", requestOptions)
       .then(response => response.text())
       .then(result => console.log(result))
       .catch(error => console.log('error', error));
Response
    true

Example List

Request
        var myHeaders = new Headers();
        
        /**
        * Copy and Paste Authentication Response "access_token" for Authorization
        */
        
        myHeaders.append("Authorization", "Bearer PASTE_HERE_ACCESS_TOKEN");
        myHeaders.append("Content-Type", "application/json");
        
        var requestOptions = {
           method: 'GET', // It is used for the GET method get function.
           headers: myHeaders,
           redirect: 'follow'
        };
        
        /**
        * addon_slug : advs, cats, posts, ...
        * stream_slug : "advs" for Advs Module, "category" for Cats Module, "categries" for Posts, ...
        */
        
        
        /**
        * Example
        * addon_slug : “posts”,
        * stream_slug : “categories”
        */
        
        fetch("https://your-site/api/entries/addon_slug/stream_slug", requestOptions)
           .then(response => response.text())
           .then(result => console.log(result))
           .catch(error => console.log('error', error));
Response
        {
           "data": [
           {
               "id": 1,
               "sort_order": 1,
               "created_at": "2021-06-01T11:48:32.000000Z",
               "created_by_id": null,
               "updated_at": "2021-06-01T11:48:32.000000Z",
               "updated_by_id": null,
               "deleted_at": null,
               "slug": "news",
               "name": "News",
               "description": "Company news and updates.",
               "meta_title": null,
               "meta_description": null
           },
           {
               "id": 3,
               "sort_order": 2,
               "created_at": "2021-06-14T08:49:45.000000Z",
               "created_by_id": null,
               "updated_at": "2021-06-14T08:49:45.000000Z",
               "updated_by_id": null,
               "deleted_at": null,
               "slug": "test_updated",
               "name": "TEST EN New Title",
               "description": null,
               "meta_title": null,
               "meta_description": null
           }
        ],
           "pagination": {
           "current_page": 1,
               "first_page_url": "/api/entries/posts/categories?page=1",
               "from": 1,
               "last_page": 1,
               "last_page_url": "/api/entries/posts/categories?page=1",
               "links": [
               {
                   "url": null,
                   "label": "« Previous",
                   "active": false
               },
               {
                   "url": "/api/entries/posts/categories?page=1",
                   "label": "1",
                   "active": true
               },
               {
                   "url": null,
                   "label": "Next »",
                   "active": false
               }
           ],
               "next_page_url": null,
               "path": "/api/entries/posts/categories",
               "per_page": 15,
               "prev_page_url": null,
               "to": 2,
               "total": 2
        }
        }

Example Detail Entry

Request
        var myHeaders = new Headers();
        
        /**
        * Copy and Paste Authentication Response "access_token" for Authorization
        */
        
        myHeaders.append("Authorization", "Bearer PASTE_HERE_ACCESS_TOKEN");
        myHeaders.append("Content-Type", "application/json");
        
        var requestOptions = {
           method: 'GET', // It is used for the GET method get function.
           headers: myHeaders,
           redirect: 'follow'
        };
        
        /**
        * addon_slug : advs, cats, posts, ...
        * stream_slug : "advs" for Advs Module, "category" for Cats Module, "categries" for Posts, ...
        */
        
        
        /**
        * Example
        * addon_slug : “posts”,
        * stream_slug : “categories”,
        * entry_id : “1” or “2”
        */
        
        fetch("https://your-site/api/entries/addon_slug/stream_slug/entry_id", requestOptions)
           .then(response => response.text())
           .then(result => console.log(result))
           .catch(error => console.log('error', error));
Response
        {
           "data": {
           "id": 2,
               "sort_order": 2,
               "created_at": "2021-06-14T08:49:45.000000Z",
               "created_by_id": null,
               "updated_at": "2021-06-14T08:49:45.000000Z",
               "updated_by_id": null,
               "deleted_at": null,
               "slug": "test_updated",
               "name": "TEST EN New Title",
               "description": null,
               "meta_title": null,
               "meta_description": null
        }
        }

统计信息

  • 总下载量: 6.52k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 3
  • 点击次数: 0
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 3
  • Watchers: 1
  • Forks: 3
  • 开发语言: PHP

其他信息

  • 授权协议: Unknown
  • 更新时间: 2021-06-25