2017-01-18 1 views
2

RESTfulデザインはURLまたは[FromBody]のデータを優先しますか?RESTfulデザインは[FromBody]タグを好むのですか?

[Route("ServiceActivity({serviceActivityGuid:guid})/State({serviceAppointmentState:int})/Status({statusCode:int})", Name = "ServiceActivityStateStatusPut")] 
[HttpPut] 
[NotNull] 
public ServiceAppointment ServiceActivityStateStatusPut(int serviceAppointmentState, int statusCode, Guid serviceActivityGuid) 
{ 
    return this.serviceActivityService.UpdateShowTimeAs(serviceAppointmentState, statusCode, serviceActivityGuid); 
} 

ではなく、このような何かをすることが好ましい:

は、私は、コントローラのメソッドを持っていると仮定しますか?

[Route("ServiceActivity({serviceActivityGuid:guid})", Name = "ServiceActivityStateStatusPut")] 
    [HttpPut] 
    [NotNull] 
    public ServiceAppointment ServiceActivityStateStatusPut([FromBody] myObject) 
    { 
     return this.serviceActivityService.UpdateShowTimeAs(myObject); 
    } 

これの動作は、クライアントが移動したときにことを次のようになります。特に

../ServiceActivity({serviceActivityGuid:guid})/State({serviceAppointmentState:int})/Status({statusCode:int}) 

../ServiceActivity(BF6ACF8D-8967-4D2B-BF53-E112D15A609B)/State (0)

次に、の状態を1に設定し、主キーBF6ACF8D-8967-4D2B-BF53-E112D15A609Bのレコードは、のステータスになります。

RESTfulデザインはURLまたは[FromBody]のデータを優先しますか?

答えて

1

RESTはすべてリソースです。その背後にあるアイデアは、アクセスポイントがリソースに特に関連している必要があるということです。

開始する前に、RESTとHTTPが連携して動作する必要がないことを確認してください.RESTsulサービスはHTTPを使用する必要はなく、HTTPはRESTfulである必要はありません。

あなたの例では、私は個人的にを好むでしょう。あなたのURLスキームをよりリーズナブルに再設計できるからです。それは、例えばASP.NET

におけるHTTP構築物があるので、REST自体が[FromBody]を好むしない、上記の例では、あなたのリソースがServiceActivityはので、より多くの意味をなすことPUT方法のため/ServiceActivity/{serviceActivityGuid:guid}のようなURLを持つように見えます。実際のルーチンは、あなたの2番目のルーチンのように見えます。

最初の例がGETだった場合は、RESTが好むものに近いと言いますが、それはPUTなので、それは意味をなさないと思います。私は最初の例を、サービス活動の状態のステータスを更新するつもりであると解釈しています。あなたの最初のものが必ずしも「間違っている」わけではありませんが、それ自体はです。実際にどのようなリソースが実際に影響を受けているかについては間違っています。

また、URLの書式も見ていきます。私の意見では、Resource({id})形式の使用は、HTTPを使用したRESTの一般的なプラクティスとインラインではないようです。私は

あなたは状態、私は1の状態と活動のすべてを返すように/ServiceActivity?state=1&status=0ような何かをするだろう状況に照会する必要がありますGETを持っていない場合は/Resource/{id}/Subresource/{id}などのような形式になりますステータスは0です。

RESTに関するいくつかの良いリソースがhereを見つけることができる、here、およびhere

・ホープ、このことができます:)

EDIT正確にあなたに答えるが、思われませんRESTとHTTP上のgood questionを良いリソースのように。

関連する問題