$resourceκ° μκ³ urlμ μ¬μ©ν 맀κ°λ³μλ₯Ό λ³΄λΌ λ μΈμ½λ©νμ§ μλ μ΅μ μ΄ μμΌλ©΄ μ’μ κ²μ λλ€. OOBλ URLκ³Ό μΌμΉνκΈ° μ μ 맀κ°λ³μ(μ΄ κ²½μ° "κ²½λ‘")λ₯Ό μΈμ½λ©ν©λλ€. μλ₯Ό λ€μ΄
// In SomeResourceName factory:
$resouce('/:path', { path: 'default.json' }, ...)
// Useing SomeResourceName
SomeResourceName.get({ path: 'game/mygame.json' })
κ·Έλ¬λ©΄ "/game/mygame.json" λμ url "/game%2Fmygame.json"μ΄ νΈμΆλ©λλ€.
λΉ λ₯Έ μμ λ°©λ²μ΄ μμ΅λλ€.
// 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 μμ±μμ κΈ°λ³Έ μΈμμ μ λ¬νμ¬ μΈμ½λ©μ 건λλ°λλ‘ μ§μν μλ μμ΅λλ€.
νμ΄μ¬νΉ λ³κ²½ μ¬νμΌλ‘ μμ§λ₯Ό μμ±νμ΅λλ€ :) https://gist.github.com/3749345
μ΄κ²μ +1. λ ν° μ μ°μ±μ μ 곡ν©λλ€. μ°λ¦¬μ μ¬μ© μ¬λ‘μμλ λ°±μλμ μ€νλ§ λ°μ΄ν° λ μ€νΈλ₯Ό μ¬μ©νκ³ μμΌλ©° κ²μ λ°©λ²μ κΈ°λ³Έ CRUD μμ κ³Ό λμΌν 리μμ€ κ°μ²΄μμ μμ μ 맀νν΄μΌ νλ κ²½λ‘ λ§€κ°λ³μμ λλ€.
+1. μ°λ¦¬ IDμλ μ¬λμκ° ν¬ν¨λμ΄ μμΌλ©°(RavenDB μ¬μ©) μΈμ½λ©λμ§ μμ κ²½μ° κΉ¨λν μ루μ μ΄ λ κ²μ λλ€.
μ ν μ¬νμΌλ‘ λ§λλ κ²μ μ’μ§λ§ κΈ°λ³Έμ μΌλ‘ νμ±νλμ΄ μλμ§ νμΈνμμμ€.
URIλ₯Ό μΈμ½λ©νμ§ μλ κ²μ΄ μ’μ΅λλ€. κ·Έλ κ² νμ§ μλ κ²μ΄ μ§κΈμ "κΉ¨λν" κ²μ²λΌ λ³΄μΌ μ μμ§λ§ μ΄λ² μμ΄λ λ€μ μμμ λΉμ μ μλ©μ΄λ₯Ό λ¬Όμ΄λ―μ κ²μ΄λΌκ³ μ₯λ΄ν©λλ€.
http://www.ietf.org/rfc/rfc3986.txt λ₯Ό μ¬λ°λ₯΄κ² μ½μλ€λ©΄ μ‘°κ°μ λν΄ μΈμ½λ©λμ§ μμ μ¬λμλ₯Ό νμ©ν΄μΌ ν©λλ€.
3.5. ννΈ
URIμ μ‘°κ° μλ³μ κ΅¬μ± μμλ κ°μ
κΈ°λ³Έ 리μμ€λ₯Ό μ°Έμ‘°νμ¬ λ³΄μ‘° 리μμ€ μλ³
리μμ€ λ° μΆκ° μλ³ μ 보. μλ³λ
보쑰 리μμ€λ κΈ°λ³Έ 리μμ€μ μΌλΆ λλ νμ μ§ν©μΌ μ μμ΅λλ€.
μμ, κΈ°λ³Έ μμμ ννμ λν μΌλΆ 견ν΄, λλ
ν΄λΉ ννμ μν΄ μ μλκ±°λ μ€λͺ λλ λ€λ₯Έ 리μμ€. γ
μ‘°κ° μλ³μ κ΅¬μ± μμλ
μ«μ κΈ°νΈ("#") λ¬Έμλ‘ κ΅¬μ±λκ³ 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μ νμ¬ λμμΈμμλ μ΄κ²μ νμ©νλ κ²μ μ£Όμ ν©λλ€.
μ λ REST/νμ΄νΌλ―Έλμ΄ λμμΈμ $locationμ μ¬μ©νκ³ RavenDB(λλ $resource)λ₯Ό μ¬μ©νμ§ μμ΅λλ€. λΌμ΄λΈλ¬λ¦¬μ ν¨μΉ λ²μ μΌλ‘ μμ ν΄μΌ νμ΅λλ€.
λν μ€μ λ‘ μ΄ μ μμ΄ μ€μ λ‘ RFC λ λ°λ₯΄κ³ μλ€λ νμΈμ ꡬνκ³ μμ΅λλ€. μ μ λ΄ μ견μ μ°Έμ‘°νμμμ€.
λλ λν λΌμ΄λΈλ¬λ¦¬ μ£Όλ³μμ μ½κ° λ Ήμ¬μμ μ μμ΅λλ€. μ κ° νλ Έλ€λ©΄ ν° μ¬κ³Όλ₯Ό λ립λλ€. λν νλ λ L332μ 리μμ€μ μκ³ λ€λ₯Έ νλ λ 1071μ Angularμ ꡬνλμ΄ μμ΅λλ€.
$location ;-)μμ μ¬μ©νλ κ²μ΄κΈ° λλ¬Έμ Angularμ μλ κ²μ΄ νμν©λλ€. μλͺ»λ λΆμμ΄ μμΌλ©΄ μ¬κ³Όλ립λλ€.
+1
μ¬λμκ° ν¬ν¨λ 리μμ€ URLμ ꡬμ±νκΈ° μν ν΄κ²° λ°©λ²μ΄ μλ μ¬λμ΄ μμ΅λκΉ?
μ΄μ λν μμ§μμ΄ μμ΅λκΉ?
κ·Έλ° μ΅μ
μ μ§μ μ¬μ©ν μ μλ μ§μ μ μΆκ°νκΈ°λ§ νλ©΄ λ©λλ€.
μ΄λ΄,
λλ κ°μ λ¬Έμ κ° μμ§λ§ μμ μ λλ₯Ό μν΄ μλνμ§ μμ΅λλ€. μ΄ encodeUirSegment λ©μλλ₯Ό μ΄λμ λ°°μΉν΄μΌ ν©λκΉ, μλλ©΄ μ΄ μ΅μ μ μ΄λμ λ°°μΉν μ μμ΅λκΉ? :/
λλ URLμ λ³ννκΈ° μν΄ HTTP μΈν°μ
ν°λ₯Ό μ¬μ©νκ³ μμμ΅λλ€. IE11μμ ν
μ€νΈν λκΉμ§ μλνμ΅λλ€. IE11μμ %
λ₯Ό ν¬ν¨ν URLμ λν XHR μμ²μ λν κ°λ λλκΈ°. IE10μ νμ€νμ§ μμ΅λλ€. Angularλ IE9+( μ°Έμ‘° )λ₯Ό μ§μν΄μΌ ν©λλ€.
μμ λ ngResourceλ‘ λμκ°κΉ..
@connorbode --- μΉκ΅¬, λ¬Έμ μμ μΈκΈν κ²μ²λΌ μ€ν¨ν ν μ€νΈ μ¬λ‘λ₯Ό μμ±νμΈμ =) μ΄ κ²½λ‘λ μ΄λ―Έ ν¬ν¨λμ΄μΌ νλ―λ‘ λ κ°μ§ κ°λ₯μ±μ΄ μμ΅λλ€. ν¬ν¨λμ§ μκ³ ν¬ν¨λμ΄μΌ νκ±°λ, μλλ©΄ μ€λ¨νκΈ° μν΄ λ¬΄μΈκ°λ₯Ό νκ³ μλ κ²μ λλ€. μ΄κ².
κ·Έκ²μ΄ 무μμΈμ§ μμ보μ!
+1
+1
+1
CouchDB λ° λμμΈ λ¬Έμ μμ λΆκ°λ₯(_design/cafehub/_view/menu_items)
μ΄ λ¬Έμ λμ λ΄ ν 리νμ€νΈλ₯Ό +1ν μ μλμ? λ¬Έμ λ₯Ό ν΄κ²°νμ§λ§ μΌλ°μ μΌλ‘ μ μΆ μ΄ν 무μλμμ΅λλ€. https://github.com/angular/angular.js/pull/7940
+1
URLdecodeλ₯Ό μννμ§ μλ μΌλΆ λ κ±°μ μΉ μλΉμ€μ μνΈ μμ©νλ €λ©΄ μ΄κ²μ΄ μ λ§λ‘ νμν©λλ€.
+1
μ¬μ©μκ° URL 맀κ°λ³μμ μΈμ½λ©μ λΉνμ±ννλ €λ μ€ν κ°λ₯νκ³ μ μ©ν μν©μ΄ λΆλͺ ν μμ΅λλ€(μ: κΈ°λ³Έ URLμ 리μμ€ κ²½λ‘λ₯Ό μΆκ°νλ €λ κ²½μ°).
+1
+1
+1
+1
@toddb μ°Έκ³ λ‘ κ·νμ μ¬μ μΈμ©λ¬Έμ URLμ μ‘°κ° λΆλΆ, μ¦ #foo/bar
λΆλΆμ ββμ°Έμ‘°νλ©°, μ¬κΈ°μ μ¬λμ μ΄μ€μΌμ΄νλ μ€μ λ‘ νμνμ§ μκ±°λ μ μ νμ§ μμ΅λλ€. κ·Έλ¬λ μ΄ λ²κ·Έλ URLμ κΈ°λ³Έ κ²½λ‘ λΆλΆμμ μ¬λμλ₯Ό μ΄μ€μΌμ΄ννλ κ²μ κ΄ν κ²μ
λλ€. μΌλ°μ μΌλ‘ Angularμ $resource μλΉμ€κ° ν¨ν΄ μΌμΉ λ° URL ꡬμ±μ μ²λ¦¬νλ λ°©λ²μ RFCμ μ€μ λ‘ μ μ©λμ§ μλλ€κ³ μκ°ν©λλ€.
μΌλ° :param
μ€νμΌ λ§€κ°λ³μμμ μ¬λμλ₯Ό μ΄μ€μΌμ΄ννμ§ μμΌλ©΄ ν¨ν΄μ λ°μ ν μ μκ² λ§λλ λ¬Έμ κ° μμ΅λλ€. μλ₯Ό λ€μ΄ /x/:param
κ° μκ³ {param: 'y/z'}
/x/y/z
μμ±μ νμ©νλ©΄ κ²°κ³Ό /x/y/z
λ URL ν¨ν΄μ λν΄ κ΅¬λ¬Έ λΆμμ μ€ν¨ν©λλ€.
IMHO μ¬λμλ₯Ό λ¨Ήλ λ³ ν¨ν΄(μ: "/:param1/:param2/*pathParam"
, μ¬κΈ°μ *pathParam
μ URLμ μ¬λμλ₯Ό ν¬ν¨ν¨)μ νμ©νλ URL ν¨ν΄μ κΈ°λ₯μ κ°λ κ²μ΄ ν©λ¦¬μ μΌ μ μμ΅λλ€. *
맀κ°λ³μμ κ²½μ° μ¬λμλ₯Ό μ΄μ€μΌμ΄ν μ²λ¦¬νμ§ μκ³ νμ©νλ κ²μ΄ μ’μ΅λλ€.
@mprobst - λΉμ μ λ΄κ° μ‘°κ° μ£Όλ³μμλ§ λ²κ·Έλ₯Ό κΈ°λ‘νκ³ μμλ€λ κ²μ΄ λ§μ΅λλ€. λ΄κ° μ¬μ©νλ μ½λλ _λν_ μ‘°κ°μ μν₯μ μ€λλ€. μ λ $resource
μλΉμ€λ₯Ό μ¬μ©νμ§ μκ³ $location
$ μλΉμ€λ₯Ό μ¬μ©νκ³ μμ΅λλ€. λ΄ κΈ°μ΅μ΄ λμμ΄λλ€λ©΄ uriSegment μ½λμ λͺ κ°μ§ ꡬνμ΄ μμ΅λλ€.
λΉ λ₯Έ μ½κΈ°μμ @connorbode μ ν¨μΉκ° λ¬Έμ λ₯Ό ν΄κ²°ν κ²μ λλ€. 건배
+1
+1
+1
+1
+1
+1
+1
+1
ui-router libμ κ°μ ꡬ문μ μ¬μ©ν μ μμ΅λλ€.
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λ₯Ό μ¬μ©ν΄μΌ ν©λλ€.