$ resourceããããURLã§äœ¿çšãããã©ã¡ãŒã¿ãŒãéä¿¡ããå Žåãããããšã³ã³ãŒãããªããªãã·ã§ã³ããããšäŸ¿å©ã§ãã OOBã¯ãURLãšäžèŽããåã«ããã©ã¡ãŒã¿ãŒïŒãã®å Žåã¯ããã¹ãïŒããšã³ã³ãŒãããŸãã äŸãã°
// In SomeResourceName factory:
$resouce('/:path', { path: 'default.json' }, ...)
// Useing SomeResourceName
SomeResourceName.get({ path: 'game/mygame.json' })
ããã«ãããã/ game / mygame.jsonãã§ã¯ãªããã/ gameïŒ 2Fmygame.jsonããšããURLãåŒã³åºãããŸãã
ã¯ã€ãã¯ãã£ãã¯ã¹ã®åé¿çããããŸãïŒ
// In angular-resource.js and method encodeUriSegment
function encodeUriSegment(val) {
return encodeUriQuery(val, true).
replace(/%26/gi, '&').
replace(/%3D/gi, '=').
replace(/%2B/gi, '+').
replace(/%2F/gi, '/'); // <--- Add this line
}
äœãå£ãããã¯ããããŸããããä»ã®ãšããããã¯ç§ã«ãšã£ãŠã¯ããŸããããŸãã ResourceFactoryã®actionsåŒæ°ãä¹ã£åã£ãŠãã¹ããããšã³ã³ãŒããã©ã°ãRouteã³ã³ã¹ãã©ã¯ã¿ãŒã®defaultsåŒæ°ã«æž¡ããŠããšã³ã³ãŒããã¹ãããããããã«æ瀺ããããšãã§ããŸãã
ãã€ãžã£ãã¯ã®å€æŽãå«ãèŠç¹ãäœæããŸããïŒ ïŒhttps://gist.github.com/3749345
ããã«+1ã æè»æ§ãåäžããŸãã ãã®ãŠãŒã¹ã±ãŒã¹ã§ã¯ãããã¯ãšã³ãã«Spring Data Restã䜿çšããŠãããæ€çŽ¢ã¡ãœããã¯ã¢ã¯ã·ã§ã³ã«ãããããå¿ èŠã®ãããã¹ãã©ã¡ãŒã¿ãŒã§ãããçæ³çã«ã¯åºæ¬çãªCRUDæäœãšåããªãœãŒã¹ãªããžã§ã¯ãã«ãããŸãã
+1ã IDã«ã¯ã¹ã©ãã·ã¥ãå«ãŸããŠããïŒRavenDBã䜿çšïŒããšã³ã³ãŒããããŠããªãå Žåã¯ã¯ãªãŒã³ãªãœãªã¥ãŒã·ã§ã³ã«ãªããŸã
ãªãã·ã§ã³ã«ããããšã¯åé¡ãããŸããããããã©ã«ãã§æå¹ã«ãªã£ãŠããããšã確èªããŠãã ããã
URIããšã³ã³ãŒãããªãããšããå§ãããŸãã ããããªããšãä»ã¯ãããããã«èŠãããããããŸãããããã®äººçãŸãã¯æ¬¡ã®äººçã§ãå°»ã«åã¿ä»ãã§ãããã
http://www.ietf.org/rfc/rfc3986.txtãæ£ããèªãã å Žåããã©ã°ã¡ã³ãã®ãšã³ã³ãŒããããŠããªãã¹ã©ãã·ã¥ãèš±å¯ãããã¯ãã§ãã
3.5ã æç
URIã®ãã©ã°ã¡ã³ãèå¥åã³ã³ããŒãã³ãã¯éæ¥ãèš±å¯ããŸã
ãã©ã€ããªãåç §ããããšã«ããã»ã«ã³ããªãªãœãŒã¹ã®èå¥
ãªãœãŒã¹ãšè¿œå ã®èå¥æ å ±ã èå¥ããã
ã»ã«ã³ããªãªãœãŒã¹ã¯ããã©ã€ããªã®äžéšãŸãã¯ãµãã»ããã§ããå¯èœæ§ããããŸã
ãªãœãŒã¹ããã©ã€ããªãªãœãŒã¹ã®è¡šçŸã«é¢ããããã€ãã®ãã¥ãŒããŸãã¯
ãããã®è¡šçŸã«ãã£ãŠå®çŸ©ãŸãã¯èšè¿°ãããä»ã®ãªãœãŒã¹ã A
ãã©ã°ã¡ã³ãèå¥åã³ã³ããŒãã³ãã¯ã
çªå·èšå·ïŒ "ïŒ"ïŒæåã§ãURIã®çµããã§çµäºããŸããfragment = *( pchar / "/" / "?" )
..ã
æåã®ã¹ã©ãã·ã¥ïŒ "/"ïŒãšçåç¬ŠïŒ "ïŒ"ïŒã¯ã
ãã©ã°ã¡ã³ãèå¥åå ã®ããŒã¿ãè¡šããŸãã ããã€ãã®ããšã«æ³šæããŠãã ãã
å€ãã誀ã£ãå®è£ ã¯ãã®ããŒã¿ãæ£ããåŠçããªãå¯èœæ§ããããŸã
çžå¯Ÿåç §ã®ããŒã¹URIãšããŠäœ¿çšãããå ŽåïŒã»ã¯ã·ã§ã³
5.1ïŒã
ãŠãŒã¹ã±ãŒã¹ïŒ $location.hash('/secondary-resource')
ç§ã¯ãã èå³ããããŸããããªãã®ãã©ã¡ãŒã¿ãäºéã«ãšã³ã³ãŒãããããšã«ãã£ãŠãã®åé¡ãåé¿ããããšã¯å¯èœã§ããïŒ
ç³ãèš³ãããŸããããããã¯ããã«æªåããŸãã ç¡é§ã ãšæããã®ã«ã確èªã®ããã«ããããã®ãªãŒãã³ãè©ŠããŠã¿ãŸããïŒ
'/'ã 'ïŒ 252F'->ïŒ 25252F
ãŸãã
/ïŒ
2f->ïŒ
252F
'/'ã '//'->ïŒ
2FïŒ
2F
èããŠãããŠããããšãã ãªã¯ãšã¹ãã¯ãŸã æ®ã£ãŠããŸãã
ä»æ¥ããã«åºããããã +1
æ°ã«å
¥ããªããããããŸããããIDã«ã¯ã¹ã©ãã·ã¥ãå«ãŸããŠããŸãã ããã¯ãªãã·ã§ã³ã§ããå¿
èŠããããŸãã
+1
+1
+1
+1
+1
+1
çŸåšã®å®è£ ã«åé¡ãåŒãèµ·ããããŒã¿ããŒã¹ïŒRavenDBïŒã«ã€ããŠã®èšåããããŸããããšã³ã³ãŒããããã³ã³ããŒãã³ããäºæããããã¯ãšã³ãã§æ£ããIDã«ãã³ãŒãããäžéãµãŒããŒããããšæããŸãã 誰ãã匷å¶ãšã³ã³ãŒãã£ã³ã°ãåé¡ãåŒãèµ·ãããŠããå Žåã®ããå ·äœçãªãŠãŒã¹ã±ãŒã¹ãæäŸã§ããŸããïŒç³ãèš³ãããŸããããRavenDBã«é¢ããã³ã³ããã¹ãããã以äžãããŸããïŒã
$ resourceã®çŸåšã®èšèšã§ã¯ããããèš±å¯ããããšãèºèºããŸããããã«ããããŠãŒã¶ãŒå ¥åããªã¯ãšã¹ãã®ãã¹ã«åœ±é¿ãäžãããããªãããã§ãã
RavenDBïŒãŸãã¯$ resourceïŒã§ã¯ãªããREST /ãã€ããŒã¡ãã£ã¢ãã¶ã€ã³ã«$ locationã䜿çšããŸãã ããããé©çšããããŒãžã§ã³ã®ã©ã€ãã©ãªã䜿çšããå¿ èŠããããŸããã
ç§ã¯ãŸããå®éã«ãã®ææ¡ãå®éã«RFCã«ãæºæ ããŠããããšã®ç¢ºèªãæ±ããŠããŸã-äžèšã®ç§ã®ã³ã¡ã³ããåç §ããŠãã ãã
ãŸããã©ã€ãã©ãªã®åšãã§å°ãéã³ãŠãããããããŸãã-ç§ãééã£ãŠãããšéåžžã«å€§ããªè¬çœª-L332ã®ãªãœãŒã¹ãš1071ã®Angularã®2ã€ã®å®è£ ããããŸãã
$ locationã§äœ¿çšãããŠããã®ã§Angularã®ãã®ãå¿ èŠã§ã;-ïŒïŒã¯ããããã§åé¡ãçºçããã®ã§ãå¥ã®å®è£ ããªãããšããå§ãããŸããïŒã ééã£ãåæããã£ãå Žåã¯ãè©«ã³ç³ãäžããŸãã
+1
ã¹ã©ãã·ã¥ãå«ããªãœãŒã¹URLãäœæããããã®åé¿çã¯ãããŸããïŒ
äžèšã®ãã¡ã€ã«ã®ãããã©ã€ã³ã«åŸã£ãŠã2ã€ã®å®è£ ãäžèšã®ãšããã§ãã ããã¯èŠçã§ãã
ããã«åãã¯ãããŸããïŒ
ãã®ãããªãªãã·ã§ã³ãèªåã§å®éã«äœ¿çšã§ãããã€ã³ããè¿œå ããã ãã§ãã
ã¡ãã£ãšãããã
ç§ã¯åãåé¡ãæ±ããŠããŸãããèŠç¹ã¯ãããç§ã®ããã«åãããŸããã ãã®encodeUirSegmentã¡ãœãããã©ãã«é 眮ããå¿ èŠããããŸããããŸãã¯ãã®ãªãã·ã§ã³ãã©ãã«é 眮ã§ããŸããïŒ ïŒ/
URLãå€æããããã«HTTPã€ã³ã¿ãŒã»ãã¿ãŒã䜿çšããŠããŸããã IE11ã§ãã¹ããããŸã§ã¯æ©èœããŠããŸããã IE11ã®%
ãå«ãURLãžã®XHRãªã¯ãšã¹ãã®Angularãã¬ãŒã¯ã IE10ã«ã€ããŠã¯ããããããŸããã Angularã¯IE9 +ããµããŒãããããšã«ãªã£ãŠããŸãïŒãªãã¡ã¬ã³ã¹ïŒ
å€æŽããngResourceã«æ»ããšæããŸãã
@connorbode ---ãããããªãã®åé¡ã§èšåãããããã«ã倱æãããã¹ãã±ãŒã¹ãæžã=ïŒãã®ãã¹ã¯ãã§ã«ã«ããŒãããŠããå¿ èŠãããã®ã§ãã«ããŒãããŠããªãã¯ãã®2ã€ã®å¯èœæ§ããããŸããããã
ãããã©ãã§ããããèŠã€ããŸãããïŒ
+1
+1
+1
CouchDBããã³èšèšããã¥ã¡ã³ãïŒ_design / cafehub / _view / menu_itemsïŒãæäœã§ããŸãã
ãã®åé¡ã®ä»£ããã«ããã«ãªã¯ãšã¹ãã+1ã§ããŸããïŒ ããã¯åé¡ãä¿®æ£ããŸãããæåºä»¥æ¥äžè¬çã«ç¡èŠãããŠããŸããã https://github.com/angular/angular.js/pull/7940
+1
URLdecodeãå®è¡ããªãããã€ãã®ã¬ã¬ã·ãŒWebãµãŒãã¹ãšå¯Ÿè©±ããããã«ãããæ¬åœã«å¿
èŠã§ã
+1
ãŠãŒã¶ãŒãURLãã©ã¡ãŒã¿ãŒã®ãšã³ã³ãŒããç¡å¹ã«ãããå ŽåïŒããšãã°ãããŒã¹URLã«ãªãœãŒã¹ãžã®ãã¹ãè¿œå ãããå ŽåïŒã¯ã確å®ã«å®è¡å¯èœã§äŸ¿å©ãªç¶æ³ããããŸãã
+1
+1
+1
+1
@toddbã¯åèãŸã§ã«ãä»æ§ã®åŒçšã¯URLã®ãã©ã°ã¡ã³ãéšåãã€ãŸã#foo/bar
ã®éšåãæããŸããããã§ãã¹ã©ãã·ã¥ããšã¹ã±ãŒãããå¿
èŠã¯ãªããé©åã§ããããŸããã ãã ãããã®ãã°ã¯ãURLã®ã¡ã€ã³ãã¹éšåã§ã¹ã©ãã·ã¥ããšã¹ã±ãŒãããããšã«é¢ãããã®ã§ãã äžè¬ã«ãRFCãããã«é©çšããããšã¯æããŸãããAngularã®$ resourceãµãŒãã¹ããã¿ãŒã³ãããã³ã°ãšURLæ§ç¯ãåŠçããæ¹æ³ã¯ãRFCã«ã¯ããŸãé¢ä¿ãããŸããã
éåžžã®:param
ã¹ã¿ã€ã«ãã©ã¡ãŒã¿ã§ã¹ã©ãã·ã¥ããšã¹ã±ãŒãããªããšããã¿ãŒã³ãå転ã§ããªããªããšããåé¡ããããŸãã ããšãã°ã /x/:param
ãããã {param: 'y/z'}
/x/y/z
ã®çæãèš±å¯ããå Žåãçµæã®/x/y/z
ã¯URLãã¿ãŒã³ã«å¯Ÿãã解æã«å€±æããŸãã
ç§èŠã§ã¯ãã¹ã©ãã·ã¥ãé£ã¹ãã¹ã¿ãŒãã¿ãŒã³ãåãå
¥ããæ©èœãURLãã¿ãŒã³ã«å«ããããšã¯çã«ããªã£ãŠãããããããŸãããããšãã°ã "/:param1/:param2/*pathParam"
ã®å Žåã *pathParam
ã¯URLã®ã¹ã©ãã·ã¥ãé£ã¹ãŸãã *
ãã©ã¡ãŒã¿ã®å Žåãã¹ã©ãã·ã¥ããšã¹ã±ãŒãããã«åãå
¥ããããšãçã«ããªã£ãŠããŸãã
@ mprobst-ãã©ã°ã¡ã³ãã®åšãã§ã®ã¿ãã°ããã°ã«èšé²ããŠããããšã¯éåžžã«æ£ããã§ãã ç§ã䜿çšããŠããã³ãŒãã¯ããã©ã°ã¡ã³ãã«ã圱é¿ããŸãã ç§ã¯$resource
ãµãŒãã¹ã§ã¯ãªãã $location
ã䜿çšããŠããŸãã ç§ã®èšæ¶ãç§ã«åœ¹ç«ã€å ŽåãuriSegmentã³ãŒãã®ããã€ãã®å®è£
ããããŸãã
ã¯ã€ãã¯ãªãŒãããã®@connorbodeã«ãããããã¯ãåé¡ã«å¯ŸåŠããŸãã 也æ¯
+1
+1
+1
+1
+1
+1
+1
+1
ui-routerlibãšåãæ§æã䜿çšã§ããŸãã
http://angular-ui.github.io/ui-router/site/#/api/ui.router.util.typeïŒUrlMatcher
+1
ããã¯å Žæã§ãèµ·ãããŸã
ïŒ+1ïŒ
+1
å ã®URLãããã¯ãšã³ãã«éä¿¡ããããã«çŸåšãã³ãŒããè¡ã£ãŠããŸã
.factory('decodeUriSegment', () => {
return (url) => {
return url.replace(/@/g, '%40')
.replace(/:/g, '%3A')
.replace(/\$/g, '%24')
.replace(/,/g, '%2C')
.replace(/\+/g, '%20');
};
});
+1
+1
app.config(function($resourceProvider) {
$resourceProvider.defaults.stripTrailingSlashes = false;
});
+1
ç§ã¯angularjs $ resourceãµãŒãã¹ã§ãã®ãšã©ãŒãçºçããŠããŸã
ãšã©ãŒïŒencodeUriSegmentã¯é¢æ°ã§ã¯ãããŸãã
@ ibrahim89 ãåãããŒãžã§ã³ã®angularãšangular-resourceã䜿çšããŠããããšã確èªããŠãã ããã
@gkalpak ãããããšãïŒ
ç§ã®ãšã©ãŒã¯è§£æ±ºãããŸãã
æãåèã«ãªãã³ã¡ã³ã
@ ibrahim89 ãåãããŒãžã§ã³ã®angularãšangular-resourceã䜿çšããŠããããšã確èªããŠãã ããã