2017-10-09 3 views
1

APIのREST URIを定義する最善の方法が何であるか疑問に思っています。2つの異なるパラメータをREST APIに渡す最適なソリューションは何ですか?

私は、商品の詳細を提供するAPIを持っています。

だから私は、私はこのようなGET要求を行うことができることを知っている:commodity_detailsは、私は(商品詳細)を取得したいものであるとがのIDで

http://XXX.YYY.ZZZ.TTT:8280/commodity_details/1 

を特定の商品これは適切なREST URIでなければなりません。

http://XXX.YYY.ZZZ.TTT:8280/commodity_details/ 

と私のPOST要求に、このようなJSONペイロードをattacching:

[OK]を、私はまた、このようなPOST要求をdoint JSONドキュメントにIDパラメータを渡すことができることを知っています:

{ 
"commodity_id": 1 
} 

私は、単一のcommodity_idパラメータを持っている場合は、おそらく最初のバージョン(置く方が良いと思いますURIに必要なID)、それは?

ただし、2番目の文字が必要な場合はどうすればいいですかlanguage_idパラメータ?それは適切な言語でinternazionalized出力を提供することができるように(私のAPIもこのパラメータをLANGUAGE_ID受けるべきである。

したがって、この場合には、私は2つのパラメータ(commodity_idLANGUAGE_ID)を渡す必要があります。

この場合、

は、パラメータの両方が含まれているJSONペイロードでPOST要求を使用して優れている。このような何か:?

{ 
"commodity_id": 1, 
"language_id": 2 
} 

また、このシナリオのための適切なURIテンプレートは何ですか?

+2

独自のロールはいけない - [ '受け入れ-Language'](HTTPSを:// developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language)。一般に、あなたが依然としてURLに必要とするクロスカッティングの問題については、[クエリ文字列](https://en.wikipedia.org/wiki/Query_string) -/commodity_details/1?language = 2'を使用することができます – jonrsharpe

+0

éのパラメータはRESTfulなAPIを実装していますか? Accept-Languageはどうですか?それは魔法の魔法使いを選択するために設定することができるヘッダーですか? – AndreaNobili

+1

1.何ですか? 2.私はMDNへのリンクを提供しました、あなたはそれを読んだのですか? – jonrsharpe

答えて

-1

わずか2パラメータを渡すために、使用する方が簡単である第一のアプローチ(クエリ文字列パラメータ)で行くことができ

[HttpGet("{commodity_id}/{language_id}")] 

public string GetCommodityDetails(string commodity_id, string language_id) 
{ 
string commodityDetails=string.empty; 

//your implementation 

return commodityDetails; 
} 
関連する問題