Heim >Backend-Entwicklung >PHP-Tutorial >搭配修身写一个RESTful Web服务_PHP教程

搭配修身写一个RESTful Web服务_PHP教程

WBOY
WBOYOriginal
2016-07-13 17:53:39940Durchsuche

要创建一个Hello World应用程序,删除默认的index.php文件在应用程序目录,并创建一个新的index.php文件用下面的代码:

01 02 require "Slim/Slim.php";
03
04 // create new Slim instance
05 $app = new Slim();
06
07 // add new Route
08 $app->get("/", function () {
09     echo "

Hello Slim World

";
10 });
11
12 // run the Slim app
13 $app->run();

现在是准备你的第一个修身应用。如果你通过浏览器访问index.php文件,你应该看到一个大的“Hello斯利姆世界。”
在您的应用程序中使用的Slim,你需要包括Slim.php和斯利姆,会自动加载,它需要的所有其他文件。然后,您可以创建一个或多个实例修身对象,并添加您的路线。
苗条的构造函数接受一个应用程序的配置值的数组。模式,TEMPLATES.PATH和观看一些重要的,我们经常使用的配置。使用模式设置要像开发或生产,使用的应用环境。TEMPLATES.PATH设置使用模板文件的位置。斯利姆使用Slim_View的,默认情况下,呈现的观点,但您可以编写自定义的视图处理程序,并通过使用附加苗条价值。下面的示例演示如何创建一个新的自定义修身实例TEMPLATES.PATH和设置环境的发展模式。

1 2 $app = new Slim(array(
3     "MODE" => "development",
4     "TEMPLATES.PATH' => "./templates"
5 ));

创建一个应用程序使用斯利姆是创建路线的最重要组成部分。路由帮助一个URI映射到一个特定的请求方法的回调函数。斯利姆提供一个简单而直观的方式,以相同的URI映射的方法不同的要求。它将调用的回调函数,符合当前的URI和请求方法,或产生一个404错误,如果它是无法比拟的。加入航线后,你需要调用的run()方法修身实例运行的应用程序。
写一个图书馆服务
在更深入的运动,让我们创建一个简单的图书馆管理Web服务应用程序使用超薄。在此应用中,我们就可以列出,添加,删除,更新本书详细介绍了使用Web服务调用。
下表列出了将支持Web服务的端点:
对于数据库的交互中,我将使用NotORM书面JakubVrána作为替代ORM,它提供了一个简单而直观的API来与数据库中的数据,PHP库。NotORM使用PHP的PDO扩展来访问数据库,所以PDO的实例传递给NotORM的构造。

1 2 require "NotORM.php";
3
4 $pdo = new PDO($dsn, $username, $password);
5 $db = new NotORM($pdo);

上市书籍
第一个端点列出库中所有的书籍,让我们的使用超薄创建端点并返回JSON格式的编码数据。

01 02 ...
03 $app = new Slim(
04     "MODE" => "developement",
05     "TEMPLATES.PATH' => "./templates"
06 );
07
08 $app->get("/books", function () use ($app, $db) {
09     $books = array();
10     foreach ($db->books() as $book) {
11         $books[]  = array(
12             "id" => $book["id"],
13             "title" => $book["title"],
14             "author" => $book["author"],
15             "summary" => $book["summary"]
16         );
17     }
18     $app->response()->header("Content-Type", "application/json");
19     echo json_encode($books);
20 });

()是修身的方法,路线到指定的URI上的GET请求。它的第一个参数是URI和最后一个参数是一个回调函数。使用关键字,使我们能够从匿名函数的范围内访问外部变量。
在函数中,我们创建,遍历数据库返回的每个记录(书的数组$ DB->图书()返回一个遍历参考的书籍表)。发送响应的Content-Type头为“应用程序/ json”我们发出的编码书数据阵列。
现在让我们写一本书与一个给定的ID的详细信息端点:

01 02 ...
03 $app->get("/book/:id", function ($id) use ($app, $db) {
04     $app->response()->header("Content-Type", "application/json");
05     $book = $db->books()->where("id", $id);
06     if ($data = $book->fetch()) {
07         echo json_encode(array(
08             "id" => $data["id"],
09             "title" => $data["title"],
10             "author" => $data["author"],
11             "summary" => $data["summary"]
12             ));
13     }
14     else{
15         echo json_encode(array(
16             "status" => false,
17             "message" => "Book ID $id does not exist"
18             ));
19     }
20 });

在这里,我们添加了一个参数,本书的ID传递路线。在执行这条路线,斯利姆将调用的回调函数作为参数的参数值。
请注意该参数是强制性的。您可以通过它放在像括号内可选:/书(/ ID),如果你正在做一个参数可选,不过,你将不能够指定的回调函数的参数。在这种情况下,你可以使用func_get_args()以任何参数传递给回调函数来获得。
添加和编辑书籍
现在,让我们的地址端点添加和更新图书信息负责。我们将使用后()方法来添加新的数据,并把()来更新现有的数据。

01 02 ...
03 $app->post("/book", function () use($app, $db) {
04     $app->response()->header("Content-Type", "application/json");
05     $book = $app->request()->post();
06     $result = $db->books->insert($book);
07     echo json_encode(array("id" => $result["id"]));
08 });
09
10 $app->put("/book/:id", function ($id) use ($app, $db) {
11     $app->response()->header("Content-Type", "application/json");
12     $book = $db->books()->where("id", $id);
13     if ($book->fetch()) {
14         $post = $app->request()->put();
15         $result = $book->update($post);
16         echo json_encode(array(
17             "status" => (bool)$result,
18             "message" => "Book updated successfully"
19             ));
20     }
21     else{
22         echo json_encode(array(
23             "status" => false,
24             "message" => "Book id $id does not exist"
25         ));
26     }
27 });

为应用程序请求()返回当前请求对象(Slim_Http_Request的使用POST)或把数据。你可以得到的POST值员额()这个对象的方法,使用()方法的沽值。在这里,我们假设两个POST和PUT数据信息表的列名作为键的键/值对。在现实世界的应用程序,你将需要添加一些验证和错误处理,但我已经为简单起见,这里省略。
如果你打算从浏览器访问您的修身应用,你将不能够很容易地使PUT请求,浏览器通常不公开通过HTML的方法。为了克服这个问题,修身有一个规定,它可以让你覆盖POST请求将放置在一个隐藏字段的形式。字段的名称应该是“_method”设置为“PUT”的价值。

1



3  Title:

4  Author:

5  Summary:



8

删除书籍
我们需要的下一个显而易见的事情,现在我们有添加,编辑和书单,在我们的Web服务端点,端点删除书籍。它应该接受书要删除的ID,并从数据库中删除相应的记录。
01 02 ...
03 $app->delete("/book/:id", function ($id) use($app, $db) {
04     $app->response()->header("Content-Type", "application/json");
05     $book = $db->books()->where("id", $id);
06     if ($book->fetch()) {
07         $result = $book->delete();
08         echo json_encode(array(
09             "status" => true,
10             "message" => "Book deleted successfully"
11         ));
12     }
13     else{
14         echo json_encode(array(
15             "status" => false,
16             "message" => "Book id $id does not exist"
17         ));
18     }
19 });
一切都非常简单。首先,我们取给定的ID从数据库中相应的行,就像我们已经做了的时候本书详细介绍了。行对象上调用的delete()方法从数据库中删除该记录。www.2cto.com
我们已经建立了相关的所有书籍进行必要的终点。在某些情况下,您可能希望有一个单一的路线,将响应多个请求方法。它可以实现使用的地图()的斯利姆方法。

总结

在这篇文章中,我们已经讨论了创建一个RESTful Web服务,使用超薄框架。现在,你应该能够创建自己的Web服务应用程序,没有太多的麻烦。
当然,也有很多事情比这里讨论的简单的事情可以做。你可以有很多参数,数据验证等航线。因此,深入和喜欢苗条和NoORM来帮助你实现你的目标使用的工具。


作者:ssoftware

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/478021.htmlTechArticle要创建一个Hello World应用程序,删除默认的index.php文件在应用程序目录,并创建一个新的index.php文件用下面的代码: 01 ?php 02 require Slim/Sli...
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn