2

これは概念のミニチュア証明です。Thing #100 を取得して保存します。

var things = ThingsAPI.all("things");
things.one(100).get()
.then(function(thing) {
  thing.put();
})

まず、GET リクエストを送信します。

http://localhost:8080/things/100

しかし、その後はPUTします

http://localhost:8080/things/100/100

私はそれが元の同じ URL に PUT することを期待します。代わりに、URLhttp://localhost:8080/things/100をリストとして扱い、その中のエンティティを見つけようとします100

これを に戻したいだけですhttp://localhost:8080/things/100。私は何を間違っていますか?

編集:

代わりにこれをフェッチすると、PUTティンが機能します。しかし、私はこの方法でこれを行うことができると思っていましたall

ThingsAPI.one('things', 100).get()

そして、わかりやすくするために、ここで を定義しますThingsAPI

app.factory('ThingsAPI', function(Restangular) {
  return Restangular.withConfig(function(RestangularConfigurer) {
            RestangularConfigurer.setBaseUrl('http://localhost:8080/');
  });
});
4

1 に答える 1

2

その理由は、100を のネストされたリソースとして扱っているためthingsです。したがって、Restangular は、 がhttp://localhost:8080/things/100指定されたリソースのインデックス ルートであるかのようにルートを生成します100が、実際にはthingsid のリソースの表示ルートです100。これらのルートはたまたま同じ URI を持っています。

ご覧のとおり、Restangular は意図したリソース定義を誤解しています。PUT間違ったルートを生成します。

あなたが見つけたように、リソース 100の識別子として扱うと問題が修正されます。thingsThingsAPI.one('things', 100).get()

これは に変換されone(resource, identifier).get()ます。

于 2013-10-29T07:47:00.500 に答える