AngularJS/TIPS集/$resource/パラメタの操作について
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
#topicpath
----
#contents
さて、[[AngularJS/TIPS集/$resource]] にも書いたのですが、...
$resource('/api/weather2.json',
{ key: "@key" }, ← コレ
{
'get1': {
method: 'GET',
params: { id: '@id' } ← コレ
}
}
);
について、このパラメタのマッピングがどうもよく分かんなく...
http://js.studio-kingdom.com/angularjs/ngresource_service...
を引用させていただくと
:paramDefaults| URLのパラメータのデフォルトの値を指定しま...
ってヤツですね。。。
サンプルとして、以下のサービスをControllerから呼び出すこ...
.factory('sampleService4', function ($resource) {
return $resource('/api/weather2.json', {},
{
'get1' : {method: 'GET' },
'post1' : {method: 'POST'}
}
);
}
)
.controller('Menu8Ctrl', function ($scope, sampleService...
var obj = {
status: "0",
sessionId: 'abcdefg1',
address: 'address1',
apikey: '1234567801',
}
sampleService4.get1(obj);
sampleService4.post1(obj);
})
まずはシンプルな形からやってみます。
**シンプルなパタン [#l6489f86]
上記のままでコントローラから呼んでみると、生成されるREST...
GET: http://localhost:9000/api/weather2.json?address=ad...
POST: http://localhost:9000/api/weather2.json
POSTのBody: {"status":"0","sessionId":"abcdefg1","addres...
メソッドに渡されたデータが、クエリパラメタとなって渡され...
POSTは当たり前な感じですが、GETはJSONデータ(obj)を自動で...
** つぎに$resourceのURLをコロン付きにした場合 [#sbd83d01]
$resourceのURLとなるパラメタには下記のようにコロンをつけ...
return $resource('/:status/:sessionId/weather2.json', {}...
これがどう置換されるかを見てみました。結果は以下の通り。
GET: http://localhost:9000/0/abcdefg1/weather2.json?add...
POST: http://localhost:9000/weather2.json
POSTのBody: {"status":"0","sessionId":"abcdefg1","addres...
GETについては、プレースホルダは、一致するobjのプロパティ...
POSTについては、URLは置換されずぺしゃってなり、obj は先ほ...
** POSTについてはマッピングしないとダメぽい [#z5a43e25]
つぎに@の件です。
'post1': {
method: 'POST',
params: {status: "@status", sessionId: "@sessionId"}
}
このように書き換えて実行してみました。
結果は、POSTのURLも正しく置換されました。POSTのBodyも前回...
というかここまで一貫して分かるのは「POSTはURLについては明...
**ここまでで分かったこと [#p93e7563]
$resourceのGETを実行する場合、基本的にURLに載せようとして...
$resourceのPOSTを実行する場合、基本的にHTTP Bodyに載せて...
**さいごゴッテゴテに装飾してみると [#bbc90310]
最後に、プレースホルダと$resourceのparamDefaultsをつかっ...
.factory('sampleService4', function ($resource) {
return $resource('/api/weather2.json',
{
param1: "@status",
param2: "@sessionId"
},
{
'get1': {
method: 'GET',
params: {
constParam: 'const1',
param3: '@address'
}
},
'post1': {
method: 'POST',
params: {
constParam: 'const1',
param3: '@address'
}
}
}
);
}
こんな事になることはないと思いますが。。以下結果。
GET: http://localhost:9000/api/weather2.json?address=add...
POST: http://localhost:9000/api/weather2.json?constParam...
{"status":"0","sessionId":"abcdefg1","address":"address1...
分かったこと
GETに関しては、@を用いたマッピング機構は機能しません。こ...
POSTに関しては、まずなにをやってもHTTP Body部が変わること...
ややこしいですが「@機構はGETのときにはつかえない」「POST...
** コトの発端 [#c5fca347]
そもそもこの機構
'get1': {
method: 'GET',
params: {
constParam: 'const1',
param3: '@address'
}
},
について、このparamsの使用目的をユーザ入力値にマッピング...
'get1': {
method: 'GET',
params: {
constParam: 'const1',
param3: input <- input はメソッドの引数とか
}
},
こんな感じに使う想定でした((うしろにクエリパラメタに勝手...
こりゃなんか使い方間違ってるな、、、ってことで調査したの...
結局入力値とかはparamsでやりとりするんでなくて、
sampleService4.get1(obj);
などと引数で渡すのが正しいんでしょうね。。
**関連リンク [#xa828190]
-[[$resource | AngularJS 1.2 日本語リファレンス | js STUD...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
#topicpath
----
#contents
さて、[[AngularJS/TIPS集/$resource]] にも書いたのですが、...
$resource('/api/weather2.json',
{ key: "@key" }, ← コレ
{
'get1': {
method: 'GET',
params: { id: '@id' } ← コレ
}
}
);
について、このパラメタのマッピングがどうもよく分かんなく...
http://js.studio-kingdom.com/angularjs/ngresource_service...
を引用させていただくと
:paramDefaults| URLのパラメータのデフォルトの値を指定しま...
ってヤツですね。。。
サンプルとして、以下のサービスをControllerから呼び出すこ...
.factory('sampleService4', function ($resource) {
return $resource('/api/weather2.json', {},
{
'get1' : {method: 'GET' },
'post1' : {method: 'POST'}
}
);
}
)
.controller('Menu8Ctrl', function ($scope, sampleService...
var obj = {
status: "0",
sessionId: 'abcdefg1',
address: 'address1',
apikey: '1234567801',
}
sampleService4.get1(obj);
sampleService4.post1(obj);
})
まずはシンプルな形からやってみます。
**シンプルなパタン [#l6489f86]
上記のままでコントローラから呼んでみると、生成されるREST...
GET: http://localhost:9000/api/weather2.json?address=ad...
POST: http://localhost:9000/api/weather2.json
POSTのBody: {"status":"0","sessionId":"abcdefg1","addres...
メソッドに渡されたデータが、クエリパラメタとなって渡され...
POSTは当たり前な感じですが、GETはJSONデータ(obj)を自動で...
** つぎに$resourceのURLをコロン付きにした場合 [#sbd83d01]
$resourceのURLとなるパラメタには下記のようにコロンをつけ...
return $resource('/:status/:sessionId/weather2.json', {}...
これがどう置換されるかを見てみました。結果は以下の通り。
GET: http://localhost:9000/0/abcdefg1/weather2.json?add...
POST: http://localhost:9000/weather2.json
POSTのBody: {"status":"0","sessionId":"abcdefg1","addres...
GETについては、プレースホルダは、一致するobjのプロパティ...
POSTについては、URLは置換されずぺしゃってなり、obj は先ほ...
** POSTについてはマッピングしないとダメぽい [#z5a43e25]
つぎに@の件です。
'post1': {
method: 'POST',
params: {status: "@status", sessionId: "@sessionId"}
}
このように書き換えて実行してみました。
結果は、POSTのURLも正しく置換されました。POSTのBodyも前回...
というかここまで一貫して分かるのは「POSTはURLについては明...
**ここまでで分かったこと [#p93e7563]
$resourceのGETを実行する場合、基本的にURLに載せようとして...
$resourceのPOSTを実行する場合、基本的にHTTP Bodyに載せて...
**さいごゴッテゴテに装飾してみると [#bbc90310]
最後に、プレースホルダと$resourceのparamDefaultsをつかっ...
.factory('sampleService4', function ($resource) {
return $resource('/api/weather2.json',
{
param1: "@status",
param2: "@sessionId"
},
{
'get1': {
method: 'GET',
params: {
constParam: 'const1',
param3: '@address'
}
},
'post1': {
method: 'POST',
params: {
constParam: 'const1',
param3: '@address'
}
}
}
);
}
こんな事になることはないと思いますが。。以下結果。
GET: http://localhost:9000/api/weather2.json?address=add...
POST: http://localhost:9000/api/weather2.json?constParam...
{"status":"0","sessionId":"abcdefg1","address":"address1...
分かったこと
GETに関しては、@を用いたマッピング機構は機能しません。こ...
POSTに関しては、まずなにをやってもHTTP Body部が変わること...
ややこしいですが「@機構はGETのときにはつかえない」「POST...
** コトの発端 [#c5fca347]
そもそもこの機構
'get1': {
method: 'GET',
params: {
constParam: 'const1',
param3: '@address'
}
},
について、このparamsの使用目的をユーザ入力値にマッピング...
'get1': {
method: 'GET',
params: {
constParam: 'const1',
param3: input <- input はメソッドの引数とか
}
},
こんな感じに使う想定でした((うしろにクエリパラメタに勝手...
こりゃなんか使い方間違ってるな、、、ってことで調査したの...
結局入力値とかはparamsでやりとりするんでなくて、
sampleService4.get1(obj);
などと引数で渡すのが正しいんでしょうね。。
**関連リンク [#xa828190]
-[[$resource | AngularJS 1.2 日本語リファレンス | js STUD...
----
この記事は
#vote(おもしろかった,そうでもない)
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: