您好,欢迎访问一九零五行业门户网

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

要创建一个hello world应用程序,删除默认的index.php文件在应用程序目录,并创建一个新的index.php文件用下面的代码:
01 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 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 ./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 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 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:
6

8 删除书籍
我们需要的下一个显而易见的事情,现在我们有添加,编辑和书单,在我们的web服务端点,端点删除书籍。它应该接受书要删除的id,并从数据库中删除相应的记录。
01 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
http://www.bkjia.com/phpjc/478021.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/478021.htmltecharticle要创建一个hello world应用程序,删除默认的index.php文件在应用程序目录,并创建一个新的index.php文件用下面的代码: 01 ?php 02 require slim/sli...
其它类似信息

推荐信息