【转】简单的 Laravel 5 REST API
Introduction
Almost all successful internet based companies have APIs. API is an acronym for Application Programming Interface. APIs allows different systems to communicate with one another. Let’s say you have developed an android application for our online store. The API can be used to retrieve data from the online store and display it in the mobile application. The API can also be used to process orders from remote clients such as mobile applications, other websites etc.
Topics to be covered
We will cover the following topics
- What is a RESTful API?
- REST API Best Practices
- Larashop API
What is a RESTful API?
REST is the acronym for Representational State Transition. It is a software architectural design for building scalable web services. REST APIs allow systems to communicate over HTTP using HTTP verbs. HTTP GET is used to get resources, POST used to create new resources, PUT to update existing ones and DELETE to delete existing resources.
REST API Best Practices
This is a summary from the blog post we posted on Kode Blog 10 REST API Design Best Practices That Will Make Developers Love Your API. Read the article for detailed explanations of this summary.
- Best Practice # 1: Use HTTP VERBS to determine action to be taken
- Best Practice # 2: API Versioning
- Best Practice # 3: Use plurals to describe resources
- Best Practice # 4: Use query strings to build relations
- Best Practice # 5: Partial responses
- Best Practice # 6: Response Codes and Error Handling
- Best Practice # 7: Limit the number of request in a given time period from the same IP Address
- Best Practice # 8: Use OAuth latest version for authentication
- Best Practice # 9: use JSON as the default
- Best Practice # 10: Cache GET results for less frequently changing data
Larashop API
For now, we will only display the products and categories. Our API will implement basic authentication only. Future tutorial updates will include more functionality.
Our API will have the following URLs. All the URLs will use the HTTP verb GET
| S/N | Resource | URL | Description | Status Code |
|---|---|---|---|---|
| 1 | Product | /api/v1/products | List products | 200 |
| 2 | Product | /api/v1/products/1 | List product with id 1 | 200 |
| 3 | Category | /api/v1/categories | List categories | 200 |
| 4 | Category | /api/v1/categories/1 | List category with id 1 | 200 |
Let’s now create the routes that will give us
- Open
/app/Http/routes.php - Add the following routes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// API routes...
Route::get('/api/v1/products/{id?}', ['middleware' => 'auth.basic', function($id = null) {
if ($id == null) {
$products = App\Product::all(array('id', 'name', 'price'));
} else {
$products = App\Product::find($id, array('id', 'name', 'price'));
}
return Response::json(array(
'error' => false,
'products' => $products,
'status_code' => 200
));
}]); Route::get('/api/v1/categories/{id?}', ['middleware' => 'auth.basic', function($id = null) {
if ($id == null) {
$categories = App\Category::all(array('id', 'name'));
} else {
$categories = App\Category::find($id, array('id', 'name'));
}
return Response::json(array(
'error' => false,
'user' => $categories,
'status_code' => 200
));
}]);
HERE,
Route::get('/api/v1/products/{id?}', ['middleware' => 'auth.basic', function($id = null)defines a RESTful URL for version 1 of the API. The requested resource is Products. {id?} specifies an optional parameter. The id is used to retrieve a single product. The API uses basic authentication- The routes are calling the respective models to retrieve the data from the database.
return Response::json(…)returns the results in JSON format.
Load the following URL in your web browser
1
http://localhost/larashop/public/api/v1/products
You will get the following basic Authentication login window

User a registered email address and password from the previous tutorial on Authetication You will get the following results

Summary
Building a basic REST API in Laravel is no more than retrieving data using models and formatting the response to JSON. The future tutorial updates will build a fairly complex API that will do more.
Tutorial History
Tutorial version 1: Date Published 2015-08-31
【转】简单的 Laravel 5 REST API的更多相关文章
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- 【3】创建一个简单的Laravel例子
现在我们来创建一个Laravel的例子来帮助理解 1.首先打开app/Http/routes.php文件,在里边写上一条路由: 2.创建一个控制器,有两种方法 ①在app/Http/Controlle ...
- 实现一个简单的Laravel的dd库
前几天写了一个简单的Laravel的dd库. 为什么自己要写一个这样的库? Laravel本身已经实现了自己的输出dd函数,但是我之所以要写这样一个库,一来是因为Laravel本身对这个库的封装没办法 ...
- [Laravel] 14 - REST API: Laravel from scratch
前言 一.基础 Ref: Build a REST API with Laravel API resources Goto: [Node.js] 08 - Web Server and REST AP ...
- Gin实战:Gin+Mysql简单的Restful风格的API(二)
上一篇介绍了Gin+Mysql简单的Restful风格的API,但代码放在一个文件中,还不属于restful风格,接下来将进行进一步的封装. 目录结构 ☁ gin_restful2 tree . ├─ ...
- Laravel POST请求API接口 使用validate表单验证返回欢迎页
突然遇到的问题 就是使用Laravel进行开发API接口的时候 发现在表单验证不通过的时候返回了登录页 猜测问题应该是因为表单验证失败后进行了重定向导致的 因为返回状态码200 网上找了好久没找到 ...
- 简单快捷地测试 JPush API
随着 JPush API v3版本的推出,加上之前开放的 Report API,JPush API 逐渐切换为比较好的符合 REST API 的规范,从而也很容易地使用一般的 HTTP/REST 工具 ...
- 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法
利用Laravel 搭建oauth2 API接口 要求 laravel 5.4以上 安装 $ composer require laravel/passport 在配置文件 config/app.ph ...
- laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效
laravel jwt 做API 退出登录(注销) 该怎么弄? 如何让token失效 php框架 laravel 2.1k 次浏览 问题对人有帮助,内容完整,我也想知道答案0问题没有实际价值,缺少关键 ...
随机推荐
- Web测试Selenium:如何选取元素
Web测试工具Selenium:如何选取元素 2009-02-17 23:23 by 敏捷的水, 5372 阅读, 22 评论, 收藏, 编辑 selenium是一个非常棒的Web测试工具,他对Aja ...
- HTML-a
链接的其他使用 电话 <a href="tel:(phonenumber)">Tel</a> 短信 <a href="sms:(phonen ...
- HTML-web storage
cookie:是一个在服务区和客户端间来回传送文本值的内置机制: 大小受限:一般4KB: 只要涉及cookie,它就会自动在服务器和浏览器之间传送: //会存在安全问题:多消耗网络宽带: 操作:de ...
- 解决Windows 10下Wireshark运行问题
解决Windows 10下Wireshark运行问题在Windows 10下,安装Wireshark时候,提示WinPcap不被系统系统支持.这是由于最新版的WinPcap 4.1.3只支持到Wind ...
- Making raycast ignore multiple layers
I know how to make the raycast ignore a layer but I want it to ignore layers 9 and 10 but collide wi ...
- python 代码片段5
#coding=utf-8 # python 有两个主要数据类型:int和float.根据Kiss原则,python只有一宗整数类型int. print 3**3 print int('123') p ...
- topcoder SRM 592 DIV2 LittleElephantAndBooks
#include <iostream> #include <vector> #include <algorithm> using namespace std; cl ...
- TYVJ P1007 排座椅 Label:多想想输出 水
背景 NOIP2008年普及组第二题 描述 上课的时候总有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只 ...
- hiho 光棍节
描述 尽管付出了种种努力,jzp还是得过光棍节. jzp非常不爽,但也无能为力,只能够哀叹起来他的命运.他想到了一位长者的人生经验:“人的一生,不光要靠自我奋斗,也要考虑历史的进程”. 他终于明白自己 ...
- 提升 web 应用程序的性能(一)
提升 web 应用程序的性能,找出瓶颈,加快客户端内容的速度. 作为 web 用户,我们知道页面加载或刷新的速度对其成功至关重要.本文将帮助您更好地理解影响 web 应用程序性能的因素.学 ...