首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Resultful Url 设计原则

query] [“#” fragment] 规则 规则1:URI中不应包含尾随斜杠(/):即,最后一位 不应该是 “/” 许多 Web 组件和框架将平等对待以下两个 URI: http://api.canvas.com.../shapes/ http://api.canvas.com/shapes 但不是所有框架都支持,可能有些会返回301 错误 规则2:正斜杠分隔符(/)必须用于指示层次关系 在 URI 的路径部分的正斜杠...规则#3:应使用字符( – )来提高 URI 的可读性 例如: http://api.example.com/blogs/guy-levin/posts/this-is-my-first-post 规则...为避免这种混淆,请使用字符( - )不是下划线 规则5:URI 路径中首选小写字母 方便的话,URI 路径中首选小写字母,因为大写字母有时会导致问题。

33010

REST API 设计最佳实践:如何构建、设计和使用 API ?

优雅地处理尾部斜杠 关于URI是否应该有尾随斜杠/实际上并不是一个值得争论的问题,你只需要选择其中一种方式(即带或不带尾随斜杠),坚持使用它,并在客户端使用错误约定时优雅地重定向。 讲个故事吧!...我所使用的端点看起来像这样: POST: /buckets 当时我非常生气,怎么也想不明白究竟哪里出了问题。最后,原来是因为缺少了尾随斜杠导致服务器出错!...专业提示:大多数基于网络的框架(Angular、React等)都有一个选项可以优雅地重定向至带或不带尾随斜杠的URL版本。找到那个选项并尽早激活。 10....首先,你可能会想做类似以下操作以仅检索已发布书籍列表: GET: /books/published/ 设计问题:published 不是资源!相反,它是您要检索数据所具备特征。...这种方法的问题在于,通常情况下,框架并不是针对构建REST API服务器而设计的。例如,Flask和Express都是两个非常灵活的框架,但它们并没有专门为帮助您构建REST API制定。

32940
您找到你想要的搜索结果了吗?
是的
没有找到

laravel 学习之路 路由视图初探

在其他框架,控制器一般就是一个类,laravel 也不例外,laravel 的控制其结构并没有什么特殊。 <?...一个数据以添加一篇文章,处理这个过程的实际是 Admin\TopicController 类的 create 方法,且该方法只接受 POST 请求,这时候似乎大多数框架就要通过写更多的代码实现了。...说到这里,似乎大家是不是想起了 laravel 那种路由定义方式的好处了?...其中 Route 是一个静态类 ,get是Route类的静态方法,get方法传递了2个参数,第一个是 / 、第二个是一个闭包并且在闭包函数中return返回的东西就是我们请求到的内容,从中可以看出...Route:: 后面可以跟一个请求方法代码中就是 get 请求,那么很容易就联想到如果写成 post 哪就表示是接受一个post请求 斜杠 / 表示首页 在 url 中就是域名后面的那个斜杠 study.laraveltest.com

1.4K10

【愚公系列】2022年04月 Python教学课程 71-DRF框架之内置路由

@action(methods=['post'], detail=True, permission_classes=[IsAdminOrIsSelf]) def set_password(self...将生成以下路由: 网址模式:^users/{pk}/set_password/$ 网址名称:'user-set-password' 默认情况下,URL 模式基于方法名称,URL 名称是方法名称和带字符的方法名称的组合...@action(methods=['post'], detail=True, permission_classes=[IsAdminOrIsSelf], url_path='change-password...例如: router = SimpleRouter(trailing_slash=False) 尾随斜杠在 Django 中是约定俗成的,但在其他一些框架(如 Rails)中默认不使用。...路由器将匹配包含除斜杠和句点字符之外的任何字符的查找值。对于限制性更强(或宽松)的查找模式,请在视图集上设置属性。

92420

Go 1.22中的路由提升

在Go 1.22之前,处理这些请求的代码可能会以以下方式开始: http.Handle("/posts/", handlePost) 具有尾随斜杠的模式将所有以/posts/开头的请求路由到handlePost...如上所示,以斜杠结尾的模式,如/posts/,将匹配以该字符串开头的所有路径。要仅匹配具有尾随斜杠的路径,可以写为/posts/{$}。...该规则会选择/posts/latest不是/posts/{id},但会选择/posts/{identifier}不是两者。这似乎是错误的:通配符名称不应该影响结果。...我们最终选择了一个基于模式含义不是外观的规则。每个有效的模式都匹配一组请求。...通过讨论语言不是表达式,有些问题更容易提出和回答。我们的优先规则受到了这个理论的启发。实际上,每个路由模式对应一个正则表达式,匹配请求的集合则充当正则语言的角色。

19610

Laravel 表单方法伪造与 CSRF 攻击防护

1、表单方法伪造 有时候,我们可能需要手动定义发送表单数据所使用的 HTTP 请求方式, HTML 表单仅支持 GETPOST 两种方式,如果要使用其他的方式,则需要自己来定义实现。...GET:请求指定的页面信息,并返回响应实体。一般来说 GET 方法应该只用于数据的读取,不应当用于会产生副作用的非幂等的操作中。...对于 HTML 表单属性而言,有一个问题是 HTML 表单仅支持 GETPOST 请求,如果要使用其他请求方式怎么办?...表单请求方法伪造 要告知 Laravel 当前提交的表单使用的是 GET/POST 之外的其他请求方式,需要在表单中添加一个名为 _method 的隐藏字段,字段值是「PUT」、「DELETE」或 「PATCH..."> Laravel 会将其看作是 DELETE 请求,并将其匹配到对应的 Route::delete 路由进行处理,不是 Route::post 路由。

8.7K40

Laravel系列7.9】测试

很神奇吧,工作十来年,没有经历过一个是使用过测试驱动开发的公司,甚至单元测试在工作中都从来没写过。测试的好处自然不用多说,道听途说也了解过测试驱动开发的种种好处,也期望在后续的工作中能够应用上。...文件中,从路径就可以看出,它不是包含在默认的 vendor/laravel 目录下的。...不是说随便一个方法都要进行单元测试,最需要测试的其实是核心业务逻辑相关的一些功能函数或者类方法。...很明显就能看出,第一个测试方法应该是可以通过的,第二个方法则可能出现问题。那么我们就来运行一下 php artisan test 看看结果是怎样的。...这里直接使用 get() 方法就可以完成 get 请求。第二个测试是一个简单的 post 测试,我们通过 dump() 打印出了 post 输出的内容。

1.2K10

Laravel框架中的路由和控制器操作实例分析

本文实例讲述了Laravel框架中的路由和控制器操作。...分享给大家供大家参考,具体如下: 路由 简介: 将用户的请求转发给相应的程序进行处理 作用:建立url和程序之间的映射 请求类型:getpost、put、patch、delete 目录:app/http.../routes.php 基本路由:接收单种请求类型 //get请求 Route::get('hello1',function(){ return 'hello world'; }) //post请求...Route::post('hello2',function(){ return 'hello world'; }) 多请求路由:接收多种请求类型 //getpost请求 //match用来匹配指定请求的类型...() { return view('welcome'); }); 控制器 简介 将请求逻辑交由控制类处理,不是都交给一个routes.php文件 控制器可以将相应的php请求逻辑集合到一个类中

2K21

需要掌握的 Laravel Eloquent 搜索技术

php $results = Post::where('title', 'foo')->get(); 甚至,你可以传入一个 array 到 where 方法里,对多个字段进行比较查询。...>get(); // 获取以任何字符开始,但以 foo 结尾的文章 $result = Post::where('title', 'like', '%{$keyword}')->get(); // 获取包含...foo 的文章 $result = Post::where('title', 'like', '%{$keyword}%')->get(); 我们可以看到 Eloquent 的模糊查询功能十分灵活。...如果我们需要查询的数据不存在 区分大小写 的问题,可以执行类似下面的查询语句: <?...但是这并不是我们需要关注的,我们仅需将待查询的字符串传给 where 语句即可。返回的结果集即会包含完全匹配的数据,也会包含发音近似的数据。 总结 Laravel 为我们提供了简单实用的查询功能。

3.5K10

需要掌握的 Laravel Eloquent 搜索技术

php $results = Post::where('title', 'foo')->get(); 甚至,你可以传入一个 array 到 where 方法里,对多个字段进行比较查询。...)->get(); // 获取以任何字符开始,但以 foo 结尾的文章 $result = Post::where('title', 'like', '%{$keyword}')->get(); /...如果我们需要查询的数据不存在 区分大小写 的问题,可以执行类似下面的查询语句: <?...php $results = Post::where('meta->description', 'like', '%foo%')->get(); 这条模糊查询语句和前面的 where 查询并无二致,对吧...但是这并不是我们需要关注的,我们仅需将待查询的字符串传给 where 语句即可。返回的结果集即会包含完全匹配的数据,也会包含发音近似的数据。 总结 Laravel 为我们提供了简单实用的查询功能。

4.3K20
领券