サービススタックで検索を実装する最良の方法として、何をお勧めしますか? たとえば、現時点では、バックエンドで linq クエリを動的に構築する高度な検索フォームがあります。サービススタックを使用して検索機能を公開したい場合、最善の方法は何ですか。
[object].FirstnameStartsWith 、 [object].SurnameContains などのようなリクエスト プロパティを作成するというアイデアを使用している人を見てきました。
サービススタックで検索を実装する最良の方法として、何をお勧めしますか? たとえば、現時点では、バックエンドで linq クエリを動的に構築する高度な検索フォームがあります。サービススタックを使用して検索機能を公開したい場合、最善の方法は何ですか。
[object].FirstnameStartsWith 、 [object].SurnameContains などのようなリクエスト プロパティを作成するというアイデアを使用している人を見てきました。
私はこのようなもので行きました
[Route("/things", "GET")]
public class ThingList
{
public string Term { get; set; }
public int Take { get; set; }
public int Skip { get; set; }
}
public partial class ThingService : Service
{
public object Get(ThingList req)
{
var query = this.Things // from somewhere
if(!string.IsNullOrEmpty(req.Term))
query = query.Where(x => x.Name.Contains(req.Term));
if(req.Skip > 0) query = query.Skip(req.Skip);
if(req.Take > 0) query = query.Take(req.Take);
return query.ToList();
}
}
サービス用のbest way
API を設計する必要はありませんが、クライアントが要求 DTO を確認するだけでサービスの動作を正確に判断できるように、できる限り説明的で使いやすいものにすることを目標にする必要があります。
一般に、サービスはまとまりがあり、それらを消費するクライアント呼び出しコンテキストのユースケースに関連している必要があります。たとえば、そのリクエストに新しいフィールド/機能を追加すると、すでにそのサービスを消費している既存のクライアントに役立つ可能性があります。
結果セットの検索とフィルタリングは、追加されたすべてのフィールド/機能がターゲットの結果セットをフィルタリングするこの良い例です。
サービスを設計する際のその他の懸念事項は、キャッシュ機能です。つまり、短期的にキャッシュできない情報から長期的にキャッシュできる結果を分離します。