zoukankan      html  css  js  c++  java
  • 用laravel dingo/api创建简单的api

    1,修改.env配置文件添加

    API_STANDARDS_TREE=vnd 
    API_SUBTYPE=myapp
    API_PREFIX=api
    API_DOMAIN=null
    API_VERSION=v1
    API_NAME="My API"
    API_CONDITIONAL_REQUEST=false
    API_STRICT=false
    API_DEBUG=true
    

     Standards Tree 标准树 

    这有三个不同的树: x,prs 和 vnd。你使用的标准树需要取决于你开发的项目

    未注册的树(x)主要表示本地和私有环境

    私有树(prs)主要表示没有商业发布的项目

    供应商树(vnd)主要表示公开发布的项目 

     子类型SUBTYPE 

    子类型通常是应用程序或项目的短名称,都是小写的。

     前缀PREFIX (比如www.z5w.net/api/)

    如果你曾经使用过 API 你就会知道大多数服务都来自子域或前缀。前缀或子域是必须的,但只需要一个。请避免使用版本号作为你的前缀或子域,因为版本控制是通过 header 头 Accept 处理的。

    子域名API_DOMAIN

    比如可以用api.z5w.net来做api的调用地址。如果已经设置了前缀prefix,则domain一般设为null

    版本号version

    这个版本号是你的 API 的默认版本号,并且会在一些未提供版本号的情况下作为回调的默认值使用。在生成 API 文档时也会使用这个版本号作为默认值。

    名称Name

    你的 API 的名称只会在你使用 API Blueprint 命令生成文档的时候使用。使用此名称可以避免你每次生成文档的时候都必须手动定义名称。
    你可能需要把它用引号包起来。

    条件请求CONDITIONAL_REQUEST

    『条件请求』默认为开启状态,这有利于客户端的缓存机制在可能的情况下缓存 API 请求。

    严格模式STRICT

    严格模式要求客户端发送 Accept 头,代替配置文件中配置的默认版本。这意味着你将不能通过浏览器直接访问你的 API。

    如果开启严格模式,发送非法的 Acceept 标头会抛出一个未处理的异常 SymfonyComponentHttpKernelExceptionBadRequestHttpException ,你需要自己处理这个异常。

    调试模式Debug

    该包处理的通用错误包括一个 debug 键,当启用这个键时,将会填充堆栈跟踪详细信息。

    2,在/routes/web.php添加路由

    $api = app('DingoApiRoutingRouter');
    $api->version('v1', function ($api) {
        $api->get('helloworld', 'AppApiControllersHelloController@index');
    });
    

      3,创建文件/app/Api/Controllers/HelloController.php

    <?php
    
    namespace AppApiControllers;
    
    use IlluminateHttpRequest;
    use AppHttpControllersController;
    
    class HelloController extends Controller
    {
        public function index()
        {
            return '{content:Helloworld!}';
        }
    }
    

      4,测试路由: $ php artisan api:routes,如果出现

    +------+----------+-----------------+------+-------------------------------------------+-----------+------------+----------+------------+
    | Host | Method   | URI             | Name | Action                                    | Protected | Version(s) | Scope(s) | Rate Limit |
    +------+----------+-----------------+------+-------------------------------------------+-----------+------------+----------+------------+
    |      | GET|HEAD | /api/helloworld |      | AppApiControllersHelloController@index | No        | v1         |          |            |
    +------+----------+-----------------+------+-------------------------------------------+-----------+------------+----------+------------+
    

      表示成功

      然后访问http://www.*.com/api/helloworld,看看是不是出现了api的json数据呢?

    {content:Helloworld!}
  • 相关阅读:
    CF Round #569 Div2(contest1180)
    HY中考游记
    Luogu P2309 loidc,卖卖萌
    点击按钮使用window.open打开页面后,再次点击按钮会再打开一个页面,如何解决?
    line-height:150%/1.5em与line-height:1.5的区别
    table使用display:block时会多出一条边框
    让360双核浏览器默认极速模式,避免采用兼容模式
    使用nodejs安装http-server
    行内元素内边距对左右下起作用,外边距只对左右起作用
    微信小程序示例
  • 原文地址:https://www.cnblogs.com/ytkah/p/9280932.html
Copyright © 2011-2022 走看看