Hướng dẫn php call api - api cuộc gọi php

Xây dựng Webservice với RESTful API trong PHP

ngoton 29/07/2016PHP1 Comment29/07/2016 PHP 1 Comment

Nội dung chính

  • Xây dựng Webservice với RESTful API trong PHP
  • Related Articles
  • AES-256 encryption and decryption in PHP and C# Nhật ký lập trình [Chapter 11]
  • Autoloading trong PHP Nhật ký lập trình [Chapter 10]
  • Hàm làm tròn số ROUND, FLOOR, CEIL Nhật ký lập trình [Chapter 7]
  • RESTful Là Gì?
  • API là gì?
  • Xây dựng RESTful API
  • Video liên quan

Related Articles

AES-256 encryption and decryption in PHP and C# Nhật ký lập trình [Chapter 11]

03/05/2018

Autoloading trong PHP Nhật ký lập trình [Chapter 10]

23/04/2018

Hàm làm tròn số ROUND, FLOOR, CEIL Nhật ký lập trình [Chapter 7]

04/10/2017

RESTful Là Gì?

RESTful Là Gì?

API là gì?

Xây dựng RESTful API

Video liên quan

  • Hôm nay, Ngô TônIT xin hướng dẫn các bạn xây dựng 1RESTful API trong PHP một cách cơ bản để làm nền tảng phát triển webservice sau này.GET.
  • REST là viết tắt của cụm từ Representational State Transfer là một kiểu kiến trúc được sử dụng trong việc giao tiếp giữa các máy tính [máy tính cá nhân và máy chủ của trang web] trong việc quản lý các tài nguyên trên internet. REST sử dụng các cách biểu diễn khác nhau để biểu diễn các nguồn tài nguyên như text, JSON, XML nhưng phổ biến nhất vẫn là JSON. REST được sử dụng rất nhiều trong việc phát triển các ứng dụng Web Services sử dụng giao thức HTTP trong giao tiếp thông qua mạng internet. Các ứng dụng sử dụng kiến trúc REST này thì sẽ được gọi là ứng dụng phát triển theo kiểu RESTful.POST.
  • Một đặc tính quan trọng của dịch Web service RESTful là sử dụng một cách rõ ràng các phương thức HTTP theo cách một giao thức được xác định bởi RFC 2616. Ví dụ HTTP GET được xác định như là một phương thức sinh ra số liệu được sử dụng có chủ đích bởi các ứng dụng người dùng để thu thập tài nguyên, dữ liệu từ một máy chủ, hoặc thực thi một truy vấn mà máy chủ sẽ tìm kiếm và phản hồi cùng với một gói thông tin tương thích.PUT.
  • REST yêu cầu các nhà phát triển sử dụng phương thức HTTP một cách rõ ràng theo cách tương thích với giao thức chuẩn. Nguyên lý thiết kế REST cơ bản này thiết lập một ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và xoá [CRUD] các quá trình vận hành và các phương thức HTTP. Theo cách ánh xạ này thì:DELETE.

API là gì?

Xây dựng RESTful API

Video liên quan
Để cho phép các hành động này diễn ra, ứng dụng đã xuất bản một API mà cụ thể cho phép cho các ứng dụng bênngoài để thực hiện truy vấnđến các dữ liệu của nó và trả lại cho người dùng.
Trên trang web, điều này thường được thực hiện thông qua việc sử dụng RESTful URIs.
Ví dụ dưới đây dùng để lấy toàn bộ công thức làm bánh:
recipies.com/api/v1/recipe/cake

Xây dựng RESTful API

Video liên quan

Hôm nay, Ngô TônIT xin hướng dẫn các bạn xây dựng 1RESTful API trong PHP một cách cơ bản để làm nền tảng phát triển webservice sau này..htaccessvới nội dung sau:

REST là viết tắt của cụm từ Representational State Transfer là một kiểu kiến trúc được sử dụng trong việc giao tiếp giữa các máy tính [máy tính cá nhân và máy chủ của trang web] trong việc quản lý các tài nguyên trên internet. REST sử dụng các cách biểu diễn khác nhau để biểu diễn các nguồn tài nguyên như text, JSON, XML nhưng phổ biến nhất vẫn là JSON. REST được sử dụng rất nhiều trong việc phát triển các ứng dụng Web Services sử dụng giao thức HTTP trong giao tiếp thông qua mạng internet. Các ứng dụng sử dụng kiến trúc REST này thì sẽ được gọi là ứng dụng phát triển theo kiểu RESTful.IfModule mod_rewrite.c>

Một đặc tính quan trọng của dịch Web service RESTful là sử dụng một cách rõ ràng các phương thức HTTP theo cách một giao thức được xác định bởi RFC 2616. Ví dụ HTTP GET được xác định như là một phương thức sinh ra số liệu được sử dụng có chủ đích bởi các ứng dụng người dùng để thu thập tài nguyên, dữ liệu từ một máy chủ, hoặc thực thi một truy vấn mà máy chủ sẽ tìm kiếm và phản hồi cùng với một gói thông tin tương thích.On

RewriteCond%{REQUEST_FILENAME}!-f%{REQUEST_FILENAME}!-f

RewriteCond%{REQUEST_FILENAME}!-d%{REQUEST_FILENAME} !-d

REST yêu cầu các nhà phát triển sử dụng phương thức HTTP một cách rõ ràng theo cách tương thích với giao thức chuẩn. Nguyên lý thiết kế REST cơ bản này thiết lập một ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và xoá [CRUD] các quá trình vận hành và các phương thức HTTP. Theo cách ánh xạ này thì:api/v1/[.*]$api/v1/api.php?request=$1 [QSA,NC,L]

REST là viết tắt của cụm từ Representational State Transfer là một kiểu kiến trúc được sử dụng trong việc giao tiếp giữa các máy tính [máy tính cá nhân và máy chủ của trang web] trong việc quản lý các tài nguyên trên internet. REST sử dụng các cách biểu diễn khác nhau để biểu diễn các nguồn tài nguyên như text, JSON, XML nhưng phổ biến nhất vẫn là JSON. REST được sử dụng rất nhiều trong việc phát triển các ứng dụng Web Services sử dụng giao thức HTTP trong giao tiếp thông qua mạng internet. Các ứng dụng sử dụng kiến trúc REST này thì sẽ được gọi là ứng dụng phát triển theo kiểu RESTful./IfModule>

Một đặc tính quan trọng của dịch Web service RESTful là sử dụng một cách rõ ràng các phương thức HTTP theo cách một giao thức được xác định bởi RFC 2616. Ví dụ HTTP GET được xác định như là một phương thức sinh ra số liệu được sử dụng có chủ đích bởi các ứng dụng người dùng để thu thập tài nguyên, dữ liệu từ một máy chủ, hoặc thực thi một truy vấn mà máy chủ sẽ tìm kiếm và phản hồi cùng với một gói thông tin tương thích.Abstract class.

REST yêu cầu các nhà phát triển sử dụng phương thức HTTP một cách rõ ràng theo cách tương thích với giao thức chuẩn. Nguyên lý thiết kế REST cơ bản này thiết lập một ánh xạ 1-1 giữa các hành động tạo, đọc, cập nhật và xoá [CRUD] các quá trình vận hành và các phương thức HTTP. Theo cách ánh xạ này thì:
Khi đã hoàn thành, lớp trừu tượng sẽ đưacác thông tin yêu cầu vào một phương thức trong lớp cụ thể để thực hiện công việc. Sau đó lớp này sẽ xử lý và trả vềHTTP response cho client.

Để truy xuất một tài nguyên, sử dụng GET.

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

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

Để tạo một tài nguyên trên máy chủ, bạn cần sử dụng phương thức POST.classAPI

Để thay đổi trạng thái một tài nguyên hoặc để cập nhật nó, sử dụng PUT.

Để huỷ bỏ hoặc xoá một tài nguyên, sử dụng DELETE.

API là từ viết tắt của Application Programming Interface.Nó cho phép kết nối và trao đổi dữ liệu giữa hai hệ thống phần mềm riêng biệt. Một hệ thống phần mềm có thể nhúng các API bao gồm các hàm/thủ tục con [functions/sub-routines] mà có thể chạy bởi một hệ thống phần mềm khác.

Một sử dụng phổ biến của một API là khi bạn muốn để có được dữ liệu từ một ứng dụng [chẳng hạn như một công thức làm bánh] mà không cần phải thực sự truy cập các ứng dụng riêng của mình.Để cho phép các hành động này diễn ra, ứng dụng đã xuất bản một API mà cụ thể cho phép cho các ứng dụng bênngoài để thực hiện truy vấnđến các dữ liệu của nó và trả lại cho người dùng.Trên trang web, điều này thường được thực hiện thông qua việc sử dụng RESTful URIs.Ví dụ dưới đây dùng để lấy toàn bộ công thức làm bánh:recipies.com/api/v1/recipe/cake

*/

protected$method='';$method='';

/**

* Tài sản: Điểm cuối

* Mô hình được yêu cầu trong URI. ví dụ: /tập tin

*/

protected$endpoint='';$endpoint='';

/**

* Tài sản: Điểm cuối

* Mô hình được yêu cầu trong URI. ví dụ: /tập tin

* Thuộc tính: động từ

*/

protected$verb='';$verb='';

/**

* Tài sản: Điểm cuối

* Mô hình được yêu cầu trong URI. ví dụ: /tập tin

* Thuộc tính: động từ

* Một mô tả bổ sung tùy chọn về điểm cuối, được sử dụng cho những thứ có thể

*/

protected$args=Array[];$args=Array[];

/**

* Tài sản: Điểm cuối

* Mô hình được yêu cầu trong URI. ví dụ: /tập tin

*/

protected$file=Null; $file=Null;

/**

* Tài sản: Điểm cuối

* Mô hình được yêu cầu trong URI. ví dụ: /tập tin

*/

publicfunction__construct[$request]{function__construct[$request]{

* Thuộc tính: động từ["Access-Control-Allow-Origin: *"];

* Một mô tả bổ sung tùy chọn về điểm cuối, được sử dụng cho những thứ có thể["Access-Control-Allow-Methods: *"];

* Không được xử lý bằng các phương pháp cơ bản. ví dụ: /tập tin /quy trình["Content-Type: application/json"];

$this->args=explode['/',rtrim[$request,'/']];this->args=explode['/', rtrim[$request,'/']];

$this->endpoint=array_shift[$this->args];this->endpoint=array_shift[$this->args];

if[array_key_exists[0,$this->args]&&!is_numeric[$this->args[0]]]{ [array_key_exists[0,$this->args]&&!is_numeric[$this->args[0]]]{

$this->verb=array_shift[$this->args];this->verb =array_shift[$this->args];

* Tài sản: Args

$this->method=$_SERVER['REQUEST_METHOD'];this->method=$_SERVER['REQUEST_METHOD'];

if[$this->method=='POST'&&array_key_exists['HTTP_X_HTTP_METHOD',$_SERVER]]{ [$this->method=='POST'&&array_key_exists['HTTP_X_HTTP_METHOD',$_SERVER]]{

if[$_SERVER['HTTP_X_HTTP_METHOD']=='DELETE']{ [$_SERVER['HTTP_X_HTTP_METHOD']=='DELETE']{

$this->method='DELETE';this->method='DELETE';

}elseif[$_SERVER['HTTP_X_HTTP_METHOD']=='PUT']{elseif [$_SERVER['HTTP_X_HTTP_METHOD']=='PUT']{

$this->method='PUT';this->method='PUT';

}else{else{

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trong newException["Unexpected Header"];

* Tài sản: Args

* Tài sản: Args

switch[$this->method]{[$this->method]{

case'DELETE':'DELETE':

case'POST': 'POST':

$this->request=$this->_cleanInputs[$_POST];this->request=$this->_cleanInputs[$_POST];

break;;

case'GET':'GET':

$this->request=$this->_cleanInputs[$_GET];this->request =$this->_cleanInputs[$_GET];

break;;

case'PUT':'PUT':

$this->request=$this->_cleanInputs[$_GET];this->request=$this->_cleanInputs[$_GET];

$this->file=file_get_contents["php://input"];this->file=file_get_contents["php://input"];

break;;

default::

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trongthis->_response['Invalid Method', 405];

break;;

* Tài sản: Args

* Tài sản: Args

* Tài sản: Args

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trongAccess-Control-Allow-Origin [header chỉ định domain được phép truy cập],Access-Control-Allow-Methods [xác định phương thức được phép truy cập],Content-Type[kiểu dữ liệu, ở đây chúng ta trả về là json].

* Trường hợp, một ID số nguyên cho tài nguyên. ví dụ: ////

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

27

28

29

30

31

32

33

34

35

36

37

* hoặc //classAPI

* Thuộc tính: Tệp

* Lưu trữ đầu vào của yêu cầu đặt..

publicfunctionprocessAPI[]{functionprocessAPI[]{

if[method_exists[$this,$this->endpoint]]{[method_exists[$this, $this->endpoint]]{

return$this->_response[$this->{$this->endpoint}[$this->args]];$this->_response[$this->{$this->endpoint}[$this->args]];

* Tài sản: Args

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trong$this->_response["No Endpoint: $this->endpoint",404];

* Tài sản: Args

privatefunction_response[$data,$status=200]{function_response[$data, $status=200]{

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trong["HTTP/1.1 ".$status." ".$this->_requestStatus[$status]];

returnjson_encode[$data];json_encode[$data];

* Tài sản: Args

privatefunction_cleanInputs[$data]{function_cleanInputs[$data]{

$clean_input=Array[];clean_input= Array[];

if[is_array[$data]]{[is_array[$data]]{

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trong[$data as$k=> $v]{

$clean_input[$k]=$this->_cleanInputs[$v];clean_input[$k]=$this->_cleanInputs[$v];

* Tài sản: Args

}else{else{

$clean_input=trim[strip_tags[$data]];clean_input=trim[strip_tags[$data]];

* Tài sản: Args

return$clean_input;$clean_input;

* Tài sản: Args

privatefunction_requestStatus[$code]{function _requestStatus[$code]{

$status=array[status=array[

200=>'OK',=>'OK',

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trong=>'Not Found',

* Trường hợp, một ID số nguyên cho tài nguyên. ví dụ: ////=>'Method Not Allowed',

* hoặc //=>'Internal Server Error',

* Thuộc tính: Tệp;

return[$status[$code]]?$status[$code]:$status[500]; [$status[$code]]?$status[$code]:$status[500];

* Tài sản: Args

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trongprocessAPI[]. Công việc của nó là để xác định xem phương thức nào của lớp được thực thi khi nhận request từ phía client. Nếu có, nó sẽ gọi hàm được yêu cầu, nếu không sẽ trả về404 response.
Đó là tất cả những gì cho lớp trừu tượng. Bây giờ, chúng ta sẽ làm mộtlớpConcrete class.

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

27

28

29

30

31

32

33

34

35

36

require_once'API.class.php';_once'API.class.php';

* Trường hợp, một ID số nguyên cho tài nguyên. ví dụ: ////MyAPIextendsAPI

* Thuộc tính: Tệp

protected$User;$User;

publicfunction__construct[$request,$origin]{function __construct[$request,$origin]{

parent::__construct[$request];::__construct[$request];

* Lưu trữ đầu vào của yêu cầu đặt

* Constructor: __ConstructAPIKey= newModels\APIKey[];

* Cho phép CORS, lắp ráp và xử lý trước dữ liệuUser=newModels\User[];

if[!array_key_exists['apiKey',$this->request]]{ [!array_key_exists['apiKey',$this->request]]{

Tiêu đề ["Truy cập kiểm soát-cho phép-cho phép: *"];newException['No API Key provided'];

}elseif[!$APIKey->verifyKey[$this->request['apiKey'],$origin]]{else if[!$APIKey->verifyKey[$this->request['apiKey'],$origin]]{

tiêu đề ["phương pháp kiểm soát truy cập cho phép: *"];new Exception['Invalid API Key'];

}elseif[array_key_exists['token',$this->request]&&elseif[array_key_exists['token',$this->request]&&

!$User->get['token',$this->request['token']]]{$User->get['token',$this->request['token']]]{

Tiêu đề ["Loại nội dung: Ứng dụng/JSON"];newException['Invalid User Token'];

* Tài sản: Args

$this->User=$User;this->User=$User;

* Tài sản: Args

/**

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trong

*/

protectedfunctionexample[]{functionexample[] {

if[$this->method=='GET']{[$this->method=='GET']{

* Trường hợp, một ID số nguyên cho tài nguyên. ví dụ: ////"Your name is ".$this->User->name;

}else{ else{

* hoặc //"Only accepts GET requests";

* Tài sản: Args

* Tài sản: Args

* Tài sản: Args

* Bất kỳ thành phần URI bổ sung nào sau khi điểm cuối và động từ đã bị xóa, trongAPIKeyUsermình không nhắc tới trong bài này nhưng nó sẽ được sử dụng cho ứng dụng API với namespace là Models, sẽ thực hiện các chức năng về API key và dữ liệu user.

* Trường hợp, một ID số nguyên cho tài nguyên. ví dụ: ////

* hoặc //api.php:

* Thuộc tính: Tệp

if[!array_key_exists['HTTP_ORIGIN',$_SERVER]]{[!array_key_exists['HTTP_ORIGIN',$_SERVER]]{

$_SERVER['HTTP_ORIGIN']=$_SERVER['SERVER_NAME'];_SERVER['HTTP_ORIGIN']= $_SERVER['SERVER_NAME'];

* Tài sản: Args

try{{

$API=newMyAPI[$_REQUEST['request'],$_SERVER['HTTP_ORIGIN']];API=newMyAPI[$_REQUEST['request'], $_SERVER['HTTP_ORIGIN']];

echo$API->processAPI[];$API->processAPI[];

}catch[Exception$e]{catch[Exception$e]{

echo json_encode[Array['error'=>$e->getMessage[]]];json_encode[Array['error'=>$e->getMessage[]]];

}

Nếu bạn truy cập vào địa chỉ/api/v1/example [ nếu có dữ liệu User và Token cần thiết] bạn sẽthấy được kết quả.Các bạn hãy tìm hiểu tiếp nhé. /api/v1/example [ nếu có dữ liệu User và Token cần thiết] bạn sẽthấy được kết quả.
Các bạn hãy tìm hiểu tiếp nhé.

api code lap trinh php programming web2016-07-29 2016-07-29

Share

  • Facebook
  • Twitter
  • Stumbleupon
  • LinkedIn
  • Pinterest

Bài Viết Liên Quan

Chủ Đề