.netサービスでOpenRastaフレームワークを使用しており、ハンドラーに次のようなメソッドがあります
public OperationResult Delete(int Id)
{
// Do some operation and get an entity
return new OperationResult.OK(MyResource);
}
私の構成は次のようになります。
ResourceSpace.Has.ResourcesOfType<MyResource>()
.AtUri("/MyResource/{Id}")
.And.AtUri("/MyResource")
.HandledBy<MyResourceHandler>()
.AsJsonDataContract().ForMediaType("application/json")
.And.AsXmlDataContract().ForMediaType("application/xml");
私のリクエストは以下のように組み立てられています
HttpMethod: DELETE
AcceptHeader: "application/xml"
URI: http://localhost/MyResource/a
リソースパラメータを確認してください。deleteメソッドは整数を受け入れますが、文字を渡します。
このリクエストでは、代わりに404ステータスコードを期待していましたが、405メソッドは許可されていません。誰かがこの振る舞いを説明できますか、なぜそれが405を返すのですか?
URIに間違ったリソース名を指定すると、404が返されます。例:URI:http://localhost/OtherResource/a
更新:OpenRastaのInMemoryHostを使用してこれをテストしており、Deleteメソッドがサポートされています