ãã®èšäºã§ã¯ãWebãã¬ãŒã ã¯ãŒã¯ã§ã³ã³ãããŒã©ãŒå±€ãéçºããçµéšãå
±æããããšæããŸãã ãã®ã¬ã€ã€ãŒã«å¿
èŠãªãã®ïŒ
- HTTPèŠæ±ãšå¿çã®æœè±¡åãçµã¿èŸŒã¿å®è£
ã®äžäŸ¿ãã®è£åã
- åå¥ã®ã¢ãžã¥ãŒã«ïŒããã«ãŠã§ã¢ïŒããèŠæ±ãã³ãã©ãŒãæ§ç¯ããæ©èœã
- æãéèŠïŒURLãã£ã¹ããããäžé£ã®ãã£ã¹ãããã«ãŒã«ã®åçŽãªæ§é ã
- æãæ±çšæ§ã®é«ãã¢ãŒããã¯ãã£ãšããŠã®RESTã
åºæ¬çã«ãæåŸã®2ã€ã®ãã€ã³ãã«çŠç¹ãåœãŠãããšæããŸãããããã£ãŠãç¹ã«ãããã¯æãããªããšãªã®ã§ãæ®ãã¯éåžžã«è¡šé¢çã§ãã
HTTPãªã¯ãšã¹ããšã¬ã¹ãã³ã¹ã®æœè±¡å
ããŸããŸãªèšèªã®å€§å€æ°ã®Webãã¬ãŒã ã¯ãŒã¯ãšã¯ç°ãªããPHPã«ã¯ïŒå°ãªããšãå¹³åçãªæ§æã§ã¯ïŒèŠæ±ãªããžã§ã¯ããæäœããããã®éåžžã®ã€ã³ã¿ãŒãã§ã€ã¹ããããŸããã ãã©ãã©ã§ãåžžã«åäžã«æ§é åãããæ
å ±ãå«ãŸãªãç¹å¥ãªå€æ°ãå€æ°ãããŸãïŒããšãã°ã
$_POST
ãš
$_FILES
ã®ããŒã¿æ§é ã®éãã«å€ããã ã
$_FILES
ïŒã
ãããã£ãŠãPHPã®æé«ã®äŒçµ±ã§ã¯ã
Net_HTTP_Request
ã¯ã©ã¹ã®ãªããžã§ã¯ãã®åœ¢ã§èªè»¢è»ããã°ããçºæããŸããã ãã®äž»ãªæ©èœïŒèŠæ±ããããŒã®ãã©ã¡ãŒã¿ãŒãšãã£ãŒã«ããžã®äŸ¿å©ãªã¢ã¯ã»ã¹ããã¡ã€ã«ãªããžã§ã¯ãã®åœ¢åŒã§ã®ã¢ããããŒããªã©ã
1 <?php <br>
2 $ id = $ request [ ' id ' ] ;<br>
3 $ auth = $ request -> header [ ' Authorization ' ] <br>
4 foreach ( $ request [ ' upload ' ] as $ line ) { /* ... */ } <br>
5 $ stores = $ request [ ' upload ' ] -> copy_to ( $ permanent_path ) ;<br>
6 ?> <br>
åæ§ã«ãå¿çã¯
Net_HTTP_Response
ã¯ã©ã¹ã®ãªããžã§ã¯ãã«ãã£ãŠè¡šãããŸããããã¯ãæ¬æãæååãå埩åããŸãã¯ãã¡ã€ã«ãªããžã§ã¯ããªã©ãšããŠè¡šããå¿çããããŒã䜿çšãã䟿å©ãªäœæ¥ãæäŸããŸãã
1 <?php <br>
2 $ file = IO_FS :: File ( $ path ) ;<br>
3 return Net_HTTP :: Response () - > <br>
4 status ( Net_HTTP :: OK ) - > <br>
5 content_type ( MIME :: type_for_file ( $ file )) - > <br>
6 body ( $ file ) ;<br>
7 ?> <br>
ãªã¯ãšã¹ããã³ãã©ãŒãããã«ãŠã§ã¢
èŠæ±åŠçã¯ãæšæºã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ãããµãŒãã¹ãªããžã§ã¯ãã«ãã£ãŠå®è¡ãããŸãã
1 <?php <br>
2 interface WS_ServiceInterface { <br>
3 public function run ( WS_Environment $ env ) ;<br>
4 } <br>
5 ?> <br>
run()
ã¡ãœããã®çµæã¯ã
Net_HTTP_Response
ã¯ã©ã¹ã®ãªããžã§ã¯ãã§ãã
WS_Environment
ã¯ã©ã¹ã®ãªããžã§ã¯ãã¯ããµãŒãã¹ãªããžã§ã¯ãéã®æ
å ±äº€æãç®çãšããŠãããåãµãŒãã¹ã¯ç°å¢ãã©ã¡ãŒã¿ãŒã®å€ãäœæãèªã¿åãããŸãã¯æžã蟌ã¿ã§ããŸãã ããã©ã«ãã§ã¯ãç°å¢ã«ã¯
$env->request
ã¯ã©ã¹ã®
$env->request
èŠçŽ ãå«ãŸããŠããŸãã
åŠçäžã®ãµãŒãã¹ãå¥ã®ãµãŒãã¹ãåŒã³åºããèŠæ±ãå¿çããŸãã¯ç°å¢ãå€æŽãããšãããããããã«ãŠã§ã¢ã³ã³ããŒãã³ããååŸãã
ãWSGIæšæºã«ãã£ãŠ
ãã®ååã䜿çšãããŸãã ã¢ããªã±ãŒã·ã§ã³æ§æãããŒã¿ããŒã¹ãžã®æ¥ç¶ããã£ãã·ã³ã°ãèªèšŒããããŠæãèå³æ·±ããã£ã¹ããããå®è£
ãããç°¡åãªããã«ãŠã§ã¢ãµãŒãã¹ã®ã»ããããããŸãã
äžè¬ã«ãããã¯æãããªåæã§ãã;æåŸã«ãææ¥è»ã«ç§»ããŸãã
RESTããŒã¹ã®ãã£ã¹ããã
å€ãã®æ¢åã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯ããã£ã¹ãããã¯ããŸããŸãªã¢ããªã±ãŒã·ã§ã³ã¡ãœããã®åŒã³åºããURLæååã«é©çšãããæ£èŠè¡šçŸã«äžèŽãããããšã«åºã¥ããŠããŸãã RESTãµããŒãã®å¿
èŠæ§ã¯ããã®ã¹ããŒã ãä»ããããŸããŸãªRESTæåã®ã¢ããªã³ã®åºçŸã«ã€ãªããããŸãHTTPèŠæ±ã¡ãœããã®åæãæäŸããŸãã
äžé£ã®æ£èŠè¡šçŸã«åºã¥ããã£ã¹ãããã«ã¯ãäž»ã«ããã€ãã®æ¬ ç¹ããããŸãã
- 倧èŠæš¡ãªã¢ããªã±ãŒã·ã§ã³ã®å Žåãç°çš®ã«ãŒã«ã®å€§èŠæš¡ã§è€éãªã·ã¹ãã ãååŸãããªã¹ã¯ãããããµããŒããå°é£ã§ãã
- èŠåã·ã¹ãã ã¯éçã§ããããã®ããã»ã¹ã§ã¹ã±ãžã¥ãŒãªã³ã°ã®çµæã«çŽæ¥åœ±é¿ãäžããããšã¯å°é£ã§ãã
- ä»»æã®ã¬ãã«ã®ãã¹ããæã€çµã¿èŸŒã¿ãªãœãŒã¹ã®ã¹ã±ãžã¥ãŒãªã³ã°ã¯å°é£ã§ãã
ã©ã€ãã©ãªã®ã¹ã±ãžã¥ãŒãªã³ã°ã¹ããŒã ãéžæããããã»ã¹ã§ã¯ãããŸããŸãªæ¢åã®ãªãã·ã§ã³ãæ€èšããŸãããã
JavaæšæºJAX-RS ïŒJSR-311ïŒã§ææ¡ãããŠããã¢ãããŒããæãæ°ã«å
¥ã£ãŠããŸãã
ãªããã®æšæºãéžãã ã®ã§ããïŒ
- ã·ã³ãã«;
- RESTã¢ãã«ãã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¬ãã«ã«ééçã«è»¢éããŸãã
- æè³ãããªãœãŒã¹ã䟿å©ã«äœ¿çšã§ããŸãã
- ãªãœãŒã¹ãå®è£
ããã¯ã©ã¹ã«å¶éã課ããŸããã
PHPåºæã®ãã®ãèæ
®ããŠãæšæºã®ç°¡æããŒãžã§ã³ãå®è£
ããŸããã
- ãªãœãŒã¹ã¯ã泚éã§ã¯ãªãç¬èªã®DSLã䜿çšããŠèšè¿°ãããŸãã
- ãªãœãŒã¹ã決å®ããä»»æã®é åºã®å¯èœæ§ãæåŠãããããã¢ã«ãŽãªãºã ã倧å¹
ã«ç°¡çŽ åãããŸããã
ãªã¯ãšã¹ããããŒãžã£ãŒã¯ãµãŒãã¹ãªããžã§ã¯ããšããŠå®è£
ãããŸãïŒ
WS_ServiceInteface
ïŒ ãã®
run()
ã¡ãœããã¯ãã¢ããªã±ãŒã·ã§ã³ãªãœãŒã¹ã»ããã®èšè¿°ã«åºã¥ããŠããã£ã¹ãããã£ãŒã«ãã£ãŠäœæãããã«ã¹ã¿ã ãªãœãŒã¹ãªããžã§ã¯ãã«åŠçãå§ä»»ããŸãã
ãªãœãŒã¹ã¯ãåã«ä»»æã®ã¯ã©ã¹ã®ãªããžã§ã¯ãã§ãã æšæºã®èŠªã¯ã©ã¹ããç¶æ¿ããå¿
èŠã¯ãªããæšæºã®ã€ã³ã¿ãŒãã§ã€ã¹ãå®è£
ããå¿
èŠã¯ãããŸããã åæã«ããŠãŒã¶ãŒã¢ããªã±ãŒã·ã§ã³ã§ã¯ãã³ãŒãã®éè€ãé¿ããããã«ç¶æ¿éå±€ãå°å
¥ããã®ãçã«ããªã£ãŠããŸããããã¬ãŒã ã¯ãŒã¯ã§ã¯ãããå¿
èŠãšããŸããã
ãªãœãŒã¹ã¯ã©ã¹ã¯ã3ã€ã®ã¿ã€ãã«åé¡ã§ããäžé£ã®ã¡ãœãããå®è£
ããŸãã
- ã¯ã©ã¹å
ã§äœ¿çšããããã®ãã«ããŒã¡ãœããã
- ããŸããŸãªã¿ã€ãã®èŠæ±ãåŠçããå¿çãªããžã§ã¯ããè¿ãHTTPã¡ãœããã
- ãã¹ãããããªãœãŒã¹ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãçæãããµããã±ãŒã¿ãŒã
ã¢ããªã±ãŒã·ã§ã³ãªãœãŒã¹
ãªãœãŒã¹ã®ã»ãããã¢ããªã±ãŒã·ã§ã³ã圢æããŸãã ã¢ããªã±ãŒã·ã§ã³ã«ã¯ãã®ãªãœãŒã¹ã®èª¬æãå«ãŸããŠãããå
éšDSLã䜿çšããŠèª¬æãäœæããŸãã
ãªãœãŒã¹ã¡ãœããã®åŒã³åºãã«ã€ããŠæ±ºå®ããã«ã¯ã䜿çšå¯èœãªãªãœãŒã¹ãšãã®ã¡ãœããã®å®å
šãªèª¬æãå¿
èŠã§ãã 1ã€ãŸãã¯è€æ°ã®ãªãœãŒã¹ã®ã³ãŒããå®éã«å®è¡ãããããããã¹ãŠã®ã¯ã©ã¹ãããŒãããå¿
èŠã¯ãããŸããã ãããã£ãŠãã¢ããªã±ãŒã·ã§ã³ãæ§æãããªãœãŒã¹ã®èª¬æã¯ãå®éã®å®è£
ããåé¢ããå¿
èŠããããŸãã
ãµã³ãã«ã¢ããªã±ãŒã·ã§ã³å³ïŒ
1 <?php <br>
2 $ companies = WS_REST_DSL :: Application () - > <br>
3 begin_resource ( ' company ', ' App.WS.Company ', ' company/{name:[a-zA-Z][a-zA-Z-]+} ' ) - > <br>
4 sublocator ( ' blog ' ) - > // - <br>
5 sublocator ( ' vacancies ' ) - > // - <br>
6 for_format ( ' html ' ) - > <br>
7 index () - > // /company/Techart/ - <br>
8 end - > <br>
9 end - > <br>
10 begin_resource ( ' blog ', ' App.WS.Blog ', null ) - > <br>
11 sublocator ( ' entry ', ' {\d+:id} ' ) - > <br>
12 for_format ( ' html ' ) - > <br>
13 get_for ( ' {page_no:\d+} ', ' index ' ) - > // /company/Techart/blog/5.html - <br>
14 post () - > // - create() <br>
15 index () - > // /company/Techart/blog/ - <br>
16 end - > <br>
17 for_format ( ' rss ' ) - > <br>
18 get ( ' index_rss ' ) - > // /company/Techart/blog/index.rss - RSS- <br>
19 end - > <br>
20 end - > <br>
21 begin_resource ( ' entry ', ' App.WS.Entry ', null ) - > <br>
22 for_format ( ' html ' ) - > <br>
23 index () - > // /company/Techart/blog/82715/ - <br>
24 get_for ( ' print ', ' print_version ' ) - > // /company/Techart/blog/82715/print.html - <br>
25 put () - > // , - update() <br>
26 delete () - > // , - delete() <br>
27 end - > <br>
28 end - > <br>
29 begin_resource ( ' vacancies ', ' App.WS.Job ', null ) - > <br>
30 for_format ( ' html ' ) - > <br>
31 index () - > // /company/Techart/vacancies/ - <br>
32 end - > <br>
33 end - > <br>
34 end ;<br>
35 ?> <br>
ãã®å³ã§ã¯ããªãœãŒã¹ã¯3ã€ã®ãã©ã¡ãŒã¿ãŒã§èª¬æãããŠããŸãã
- name-ãªãœãŒã¹åãè£å©ãã©ã¡ãŒã¿ãŒããŸã 泚æãæãããšã¯ã§ããŸããã
- classname-ãªãœãŒã¹ãå®è£
ããã¯ã©ã¹ã®ååã
- pathã¯ããªãœãŒã¹ã«å¯Ÿå¿ããURLãã¿ãŒã³ã§ãã
URLãã¿ãŒã³ã¯ãååä»ããã©ã¡ãŒã¿ãŒã䜿çšããæ£èŠè¡šçŸã§ãïŒããã§ãªãå Žåã§ãïŒïŒã
HTTPã¡ãœãã
HTTPã¡ãœããã¯ãããŸããŸãªã¿ã€ãã®èŠæ±ãåŠçããå¿çãçæããŸãã ã¡ãœããèšè¿°ãã©ã¡ãŒã¿ãŒïŒ
- name-ã¡ãœããå;
- http_mask-ãªãœãŒã¹ã¡ãœãããåŠçããhttpã¡ãœããã®çµã¿åãããæå®ãããã¹ã¯ã
- path-ã¡ãœããã«å¯Ÿå¿ããURLãã¿ãŒã³ã
- format-ã¡ãœããã圢æãããã¬ãŒã³ããŒã·ã§ã³åœ¢åŒã®ãªã¹ãã
ãªãœãŒã¹ã¯ã©ã¹ã³ã³ã¹ãã©ã¯ã¿ãŒãšãªãœãŒã¹ã¡ãœããã¯ãä»»æã®åŒæ°ã»ãããæã€ããšãã§ããŸãã URLãã¿ãŒã³ã«ãã¡ãœããã®åŒæ°ãšååãäžèŽãããã©ã¡ãŒã¿ãŒãå«ãŸããŠããå ŽåããªãœãŒã¹ã®ã³ã³ã¹ãã©ã¯ã¿ãŒãŸãã¯ã¡ãœãããåŒã³åºããããšããã©ã¡ãŒã¿ãŒå€ãèªåçã«çœ®ãæããããŸãã ããã«ã
$env
ã
$request
ãããã³
$format
ãªã©ã®ããã€ãã®å®çŸ©æžã¿æšæºãã©ã¡ãŒã¿ãŒããã
$format
ã åŒæ°åããã³ãã¬ãŒããã©ã¡ãŒã¿ã»ããã®äžéšã§ã¯ãªããäºåå®çŸ©ããããã©ã¡ãŒã¿ã§ã¯ãªãå Žåã
null
代å
¥ãããŸãã
ã¡ãœããããšã«ããã¬ãŒã³ããŒã·ã§ã³åœ¢åŒã®ãªã¹ããæå®ã§ããŸãã èŠæ±ããã圢åŒã¯ãHTTPèŠæ±ã®ããããŒãŸãã¯èŠæ±ãããããã¥ã¡ã³ãã®æ¡åŒµåã«ãã£ãŠæ±ºãŸããŸãã å圢åŒã«åå¥ã®ã¡ãœãããæäŸãããã
$format
ãã©ã¡ãŒã¿ãŒã䜿çšããŠ1ã€ã®ã¡ãœããã§åŠçãå®è¡ã§ããŸãã 圢åŒã¯ãåã
ã®ã¡ãœãããšãªãœãŒã¹å
šäœã®äž¡æ¹ã«å¯ŸããŠæå®ã§ããŸãã
ãµããã±ãŒã¿ãŒ
ãã¹ãããããªãœãŒã¹ã«å¯Ÿå¿ããã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ã®äœæã¯ãåŠçäžã«åçã«å®è¡ã§ããŸãã ãããè¡ãã«ã¯ããããããµããªãœãŒã¹ãã±ãŒã¿ãŒã䜿çšããŸãã ãªãœãŒã¹èšè¿°ã«ã¡ãœãããååšããå Žåãã¡ãœããã¯ãµããã±ãŒã¿ãŒã§ãããHTTPãã¹ã¯ã«ã¡ãœãããæå®ãããŠããŸããã ãµããã±ãŒã¿ãŒã¯èŠæ±ãåŠçããã代ããã«ããã¹ãããããªãœãŒã¹ã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãäœæããŸãã ãããã£ãŠãç¹å®ã®ãªãœãŒã¹ãäœæãã決å®ã¯ãç¹å®ã®å€éšæ¡ä»¶ã«å¿ããŠããªã¯ãšã¹ãã®åŠçæã«è¡ãããšãã§ããŸãã
ãªãœãŒã¹ã¯ã©ã¹
äžèšã®äŸã§ã¯ãããã€ãã®ãªãœãŒã¹ã¯ã©ã¹ã®ã¹ã±ã«ãã³ã¯æ¬¡ã®ããã«ãªããŸãã
1 <?php <br>
2 // - <br>
3 class App_WS_Resource { <br>
4 protected $ env ;<br>
5 protected $ db ;<br>
6 <br>
7 public function __construct ( WS_Environment $ env ) { <br>
8 $ this -> env = $ env ;<br>
9 $ this -> db = $ env -> db;<br>
10 } <br>
11 } <br>
12 <br>
13 // blog <br>
14 class App_WS_Blog extends App_WS_Resource { <br>
15 <br>
16 public function index ( $ page_no = 1 ) { /* $page_no URL */ } <br>
17 <br>
18 public function index_rss () { /* RSS- */ } <br>
19 <br>
20 public function entry ( $ id ) { <br>
21 // - <br>
22 // <br>
23 if ( $ entry = $ this -> db -> blog -> entries [ $ id ]) <br>
24 return new App_WS_Entry ( $ this -> env, $ entry ) ; <br>
25 } <br>
26 <br>
27 public function create () { /* */ } <br>
28 } <br>
29 <br>
30 // entry <br>
31 class App_WS_Entry extends App_WS_Resource { <br>
32 protected $ entry ;<br>
33 <br>
34 public function __construct ( WS_Environment $ env , App_DB_Entry $ entry ) { <br>
35 parent :: __construct ( $ env ) ;<br>
36 $ this -> entry = $ entry ;<br>
37 } <br>
38 <br>
39 public function index () { /* */ } <br>
40 public function print_version () { /* */ } <br>
41 public function update () { /* */ } <br>
42 public function delete () { /* */ } <br>
43 } <br>
ã¹ã±ãžã¥ãŒãªã³ã°ã¢ã«ãŽãªãºã
JAX-RSæšæºã§èª¬æãã
ãŠããã¢ã«ãŽãªãºã ã®ç°¡ç¥çã§ããã¹ã±ãžã¥ãŒãªã³ã°ã¢ã«ãŽãªãºã ã¯ã次ã®ããã«ãªããŸãã
- èŠæ±ããããŒãŸãã¯ããã¥ã¡ã³ãæ¡åŒµæ©èœã«ãããå¿
èŠãªãã¬ãŒã³ããŒã·ã§ã³åœ¢åŒã決å®ããŸãã
- ãªãœãŒã¹ã®èª¬æãèŠãŠãããããã®ãã¹ãURLã®å
é ãšæ¯èŒããŸãã
- URLããã¿ãŒã³ãšäžèŽãããªãœãŒã¹ãèŠã€ãããã圢åŒããµããŒããããŠãããã®ã®ãªã¹ãã«å«ãŸããŠããå Žå-404;
- ãªãœãŒã¹ãèŠã€ãããŸãããã¡ãœãããæ¢ããŠããŸãã ãªãœãŒã¹ã®ãã¹ã«äžèŽããéšåãURLããåé€ããŸãã
- ã¡ãœããURLãã¿ãŒã³ãURLã®æ®ãã®éšåã®å
é ãšç
§åããããšã«ããããªãœãŒã¹ã¡ãœããã®ãã¹ãŠã®èª¬æã調ã¹ãŸãã
- URLãã¿ãŒã³ãšè¡šç€ºåœ¢åŒã«äžèŽããã¡ãœãããŸãã¯ãµããã±ãŒã¿ãŒããªãå Žå-404;
- é©åãªURLãã¿ãŒã³ã圢åŒãããã³HTTPãã¹ã¯ãæã€ã¡ãœãããèŠã€ãã£ãå ŽåããªãœãŒã¹ã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããã¡ãœãããåŒã³åºããŠãã©ã¡ãŒã¿ãŒã®çœ®æãå®è¡ããŸãã å®è¡çµæ-å¿çãè¡šããªããžã§ã¯ããäœæ¥ã¯å®äºããŸãã
- é©åãªURLãã¿ãŒã³ãæã€ãµããã±ãŒã¿ãŒãèŠã€ãã£ãå ŽåããªãœãŒã¹ã¯ã©ã¹ã®ãªããžã§ã¯ããäœæããã¡ãœãããåŒã³åºããŠãã©ã¡ãŒã¿ãŒã®çœ®æãå®è¡ããŸãã
- ãµããã±ãŒã¿ãŒã®çµæã¯ãæ°ãããªãœãŒã¹ã§ãã ãªãœãŒã¹ã®ãªã¹ãã§å¯Ÿå¿ããã¯ã©ã¹ã®ãªãœãŒã¹ã®èª¬æãæ¢ããŠããŸãã
- ãªãœãŒã¹ã¯ã©ã¹ã説æã«ãªãå Žå-404;
- httpã¡ãœãããèŠã€ãããŸã§ãURLã®å
é ããäžèŽããè¡ãåé€ããæé 4ã«æ»ããŸãã
ã¢ã«ãŽãªãºã ãåçŽåããããã«ãã¢ãã¬ã¹/ resource /ããã³/resource/index.htmlïŒhtml圢åŒã®å ŽåïŒã¯åçã§ãããšèããŠããŸããããã«ãã¢ã«ãŽãªãºã ã®å埩ã®æ倧æ°ã匷å¶ããŸãã
ããã©ãŒãã³ã¹ãåäžãããã«ã¯ããŸããªãœãŒã¹ã®èª¬æããã£ãã·ã¥ãã次ã«ãã¡ã€ã³ã¢ããªã±ãŒã·ã§ã³ãã¡ã€ã³ã®URLãµããã£ã¬ã¯ããªãŸãã¯ãµããã¡ã€ã³ã«ãªã³ã¯ããããšã«ããã倧ããªã¢ããªã±ãŒã·ã§ã³ãåå¥ã®å°ããªã¢ããªã±ãŒã·ã§ã³ã«åå²ããŸãã
çµæ
ææ¡ãããã¹ããŒã ãå®è£
ããããšã§äœãåŸãããŸããïŒ
- ã¢ããªã±ãŒã·ã§ã³ã®çš®é¡ïŒåŸæ¥ã®Webã¢ããªã±ãŒã·ã§ã³ãWebãµãŒãã¹ãAJAXã¢ããªã±ãŒã·ã§ã³ïŒã«é¢ä¿ãªããRESTã¢ãã«ã®ãã¹ãŠã®å©ç¹ãå®å
šã«äœ¿çšã§ããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯å®è£
ã¡ã«ããºã ããæ倧éã«åé¢ãããŠããããããã¹ãã倧å¹
ã«ç°¡çŽ åãããéçºè
ã¯ã¢ããªã±ãŒã·ã§ã³ã®ã¢ããªã±ãŒã·ã§ã³ã¢ãã«ãããèªç±ã«èšèšã§ããŸãã
- ãã£ã¹ãããã«ãŒã«ãšãçµæãšããŠããªãœãŒã¹ã¯ã©ã¹ã¯ããªãåäžãªæ§é ãæã¡ãèšèšãšãããªããµããŒããä¿é²ããŸãã ãåžæã®å ŽåïŒãã¹ãŠäžç·ã«ãªããŸãããäžç·ã«ãªããŸããïŒãã¢ããªã±ãŒã·ã§ã³ã®æ§é ã説æããã°ã©ãã£ã«ã«ãªè¡šèšæ³ãéçºãã graphvizã䜿çšããŠèŠèŠåã§ããŸãã
- ä»»æã®ãã¹ãã®æ·±ãã®åã蟌ã¿ãªãœãŒã¹ã䜿çšããã®ã¯ç°¡åã§ãã
äžè¬ã«ãææ¡ãããã¹ããŒã ã«éåžžã«æºè¶³ããŠããŸããç§ãã¡ã®æèŠã§ã¯ãå®éã«éçºè
ã«å¶éã課ãããšã¯ãªããå®è£
ãéåžžã«ç°¡åã§ãã èå³æ·±ãäºæ³å€ã®çµæã¯ãããªããã£ããªORMã¬ã€ã€ãŒãšã®éåžžã«åçŽãªçµ±åã§ãã 2ã€ã®éåžžã«åçŽãªãªãœãŒã¹ã¯ã©ã¹ã®ã¿ãå®è£
ãããããORMã¬ã€ã€ãŒãžã®åœä»€ã§HTTPãªã¯ãšã¹ãã®ééçãªãããã³ã°ãåãåããŸãããããšãã°ã
GET /api/news/stories/most_popular
$db->news->stories->most_popular->select()
POST /api/news/stories/
$db->news->stories->insert($story)
PUT /api/news/stories/15
$db->news->stories->update($db->news->stories[15]);
ãªã©ãªã©ã
ããŠãç§ãã¡
ã®å
éšRESTã»ãããŒã®è³æã¯çªç¶ã誰ããèå³ãæã€ããã«ãªããŸãã